2016-04-04 2 views
2

Простой вопрос еще раз.scala: обеспечить неизменный тип в закрытии

Как я могу указать в функции/закрытии ниже, что [больше] должно поступать из неизменяемого типа?

Другие мудрые У меня такой побочный эффект, как показано ниже!

Благодаря

var more = 3 

def increase[T: Numeric](x: T): T = implicitly[Numeric[T]].plus(x, more.asInstanceOf[T]) 

val inc = increase[Int] _ 

more = 10 

println(inc(5)) 

ответ

5

Не уверен, что это то, что вы ищете, но если вы хотите, чтобы значение, используемое функцией не изменяется после определенного момента, вы можете добавить его в качестве отдельного список аргументов и частично применить функцию с ее значением:

var more = 3 

def increase[T: Numeric](base: T)(x: T): T = implicitly[Numeric[T]].plus(x, base) 

val inc = increase[Int](more) _ 

more = 10 

println(inc(5)) // prints 8, as expected 
+0

То, что я точно ищу. Немного отличается в реализации. Но это все! благодаря – Pavel

Смежные вопросы