You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: _ba/tour/implicit-parameters.md
+5-5Lines changed: 5 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -21,7 +21,7 @@ Argumenti koji se mogu proslijediti kao implicitni parametri spadaju u dvije kat
21
21
22
22
U sljedećem primjeru definisaćemo metodu `sum` koja izračunava sumu liste elemenata koristeći `add` i `unit` operacije monoida.
23
23
Molimo primijetite da implicitne vrijednosti ne mogu biti top-level, već moraju biti članovi templejta.
24
-
24
+
25
25
```scala mdoc
26
26
abstractclassSemiGroup[A] {
27
27
defadd(x: A, y: A):A
@@ -31,7 +31,7 @@ abstract class Monoid[A] extends SemiGroup[A] {
31
31
}
32
32
objectImplicitTestextendsApp {
33
33
implicitobjectStringMonoidextendsMonoid[String] {
34
-
defadd(x: String, y: String):String= x concat y
34
+
defadd(x: String, y: String):String= x ++ y
35
35
defunit:String=""
36
36
}
37
37
implicitobjectIntMonoidextendsMonoid[Int] {
@@ -51,13 +51,13 @@ Ovaj primjer koristi strukturu iz apstraktne algebre da pokaže kako implicitni
51
51
52
52
Monoid, modelovan s `Monoid` ovdje, je polugrupa s posebnim elementom `A`, zvanim `unit`, koji kada se kombinujes nekim drugim elementom `A` vraća taj drugi element.
53
53
54
-
Da bismo pokazali kako implicitni parametri rade, prvo definišemo monoide `StringMonoid` i `IntMonoid` za stringove i integere, respektivno.
54
+
Da bismo pokazali kako implicitni parametri rade, prvo definišemo monoide `StringMonoid` i `IntMonoid` za stringove i integere, respektivno.
55
55
Ključna riječ `implicit` kaže da se dati objekat može koristiti implicitno, unutar ovog domena, kao parametar funkcije obilježene s implicit.
56
56
57
-
Metoda `sum` prima `List[A]` i vraća `A`, koji predstavlja rezultat primjene operacije monoida sukcesivno kroz cijelu listu. Navodeći parametar `m` implicitnim ovdje znači da samo moramo proslijediti `xs` parametar pri pozivu, pošto imamo `List[A]` znamo šta je tip `A` ustvari i stoga tip `Monoid[A]` se traži.
57
+
Metoda `sum` prima `List[A]` i vraća `A`, koji predstavlja rezultat primjene operacije monoida sukcesivno kroz cijelu listu. Navodeći parametar `m` implicitnim ovdje znači da samo moramo proslijediti `xs` parametar pri pozivu, pošto imamo `List[A]` znamo šta je tip `A` ustvari i stoga tip `Monoid[A]` se traži.
58
58
Možemo implicitno naći bilo koji `val` ili `object` u trenutnom domenu koji ima taj tip i koristiti ga bez da ga navedemo eksplicitno.
59
59
60
-
Napokon, zovemo `sum` dvaput, sa samo jednim parametrom svaki put.
60
+
Napokon, zovemo `sum` dvaput, sa samo jednim parametrom svaki put.
61
61
Pošto je drugi parametar metode `sum`, `m`, implicitan, njegova vrijednost se traži u trenutnom domenu, bazirano na tipu monoida koji se traži, što znači da se oba izraza mogu izračunati potpuno.
Copy file name to clipboardExpand all lines: _es/tour/mixin-class-composition.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -31,7 +31,7 @@ Aquí se muestra una clase iterador concreta, la cual retorna caracteres sucesiv
31
31
type T = Char
32
32
private var i = 0
33
33
def hasNext = i < s.length()
34
-
def next() = { val ch = scharAt i; i += 1; ch }
34
+
def next() = { val ch = s.charAt(i); i += 1; ch }
35
35
}
36
36
37
37
Nos gustaría combinar la funcionalidad de `StringIterator` y `RichIterator` en una sola clase. Solo con herencia simple e interfaces esto es imposible, ya que ambas clases contienen implementaciones para sus miembros. Scala nos ayuda con sus _compisiciones de clases mezcladas_. Permite a los programadores reutilizar el delta de la definición de una clase, esto es, todas las nuevas definiciones que no son heredadas. Este mecanismo hace posible combinar `StringIterator` con `RichIterator`, como es hecho en el siguiente programa, el cual imprime una columna de todos los caracteres de una cadena de caracteres dada.
@@ -40,7 +40,7 @@ Nos gustaría combinar la funcionalidad de `StringIterator` y `RichIterator` en
40
40
def main(args: Array[String]): Unit = {
41
41
class Iter extends StringIterator("Scala") with RichIterator
En Scala, cualquier método el cual reciba un solo parámetro puede ser usado como un *operador de infijo (infix)*. Aquí se muestra la definición de la clase `MyBool`, la cual define tres métodos `and`, `or`, y `negate`.
14
14
15
15
class MyBool(x: Boolean) {
16
-
def and(that: MyBool): MyBool = if (x) that else this
17
-
def or(that: MyBool): MyBool = if (x) this else that
16
+
infix def and(that: MyBool): MyBool = if (x) that else this
17
+
infix def or(that: MyBool): MyBool = if (x) this else that
0 commit comments