В ниже код:Scala оценка функции
object typeparam {
val v = new MyClass[Int] //> v : typeparam.MyClass[Int] = [email protected]
def f1(a : Int) = {
println("f here")
3
} //> f1: (a: Int)Int
v.foreach2(f1) //> foreach2
class MyClass[A] {
def foreach2[B](f: B => A) = {
println("foreach2")
f
}
}
}
Почему функция f1 не вызывается в функции foreach2?
Если я вместо этого использовать
object typeparam {
val v = new MyClass[Int] //> v : typeparam.MyClass[Int] = [email protected]
def f1() = {
println("f here")
} //> f1:()Unit
v.foreach2(f1) //> f here
//| foreach2
class MyClass[A] {
def foreach2[B](f: Unit) = {
println("foreach2")
f
}
}
}
Функция f1, как представляется, получить оценку, прежде чем foreach2, как "F здесь" выводится перед "foreach2". Почему это так ?
'f' принимает аргумент ... – sschaef
@sschaef спасибо, пропустили эту точку, исправили. – 4lex1v