Я пытаюсь понять, как будущее работает, и я наткнулся на его apply()
. Апи говорит это о apply()
apply() возвращает тот же объект
Запуск асинхронного вычисления и возвращает
Future
объекта с результатом этого вычисления
Я хотел лучше понять его, создав простой объект, чей применить волю вернуть тот же объект с измененными полями. Например, рассмотрим следующий код:
object Rough extends App {
trait Sample
object Sample {
var x: Int = 0
def apply[T](body: => T): String= {
"Hello " + body
}
}
val s: String = Sample.apply("World")
print(s)
}
Сейчас применяется возвращается к String
. Я хочу, чтобы он вернулся Sample[Int]
. В частности, я хочу, чтобы apply()
возвращал Sample[Int]
, где значением Int будет длина строковых символов, которая была передана в apply()
. Как я могу это сделать?
И еще одно, что «возвращает' Future' объект»(или«объект 'Sample'») не означает, что она возвращает «тот же объект», т.е. объекта, определенного объекта 'Future', но объект, который расширяет «черту Future [A]». –