2017-07-01 20 views
0

私は=記号に気づきましたが、実際の違いは何ですか?誰か説明していただけますか?なぜfunc1の戻り値の型はUnitですか?func2の戻り値の型はIntですか?

//関数func1

DEF関数func1(X:INT、OPます。int => INT){ OP(x)}

関数func1(X:INT、OP: INT => INT)ユニット

//関数func2

DEF関数func2(X:INT、OP:INT => INT)= { OP(x)の }

関数func2:(X:INT、OP:のInt => INT)あなたはDEFの "=" 記号を使用するときにScalaでのInt

+0

こんにちはサニー、SOに歓迎:そこで第二の機能は、長い形式は次のようになりますのIntを、返します。 https://stackoverflow.com/help/how-to-ask – petezurich

+2

[Scalaメソッド宣言で等号を使用するタイミングは?](https: //stackoverflow.com/questions/944111/when-to-use-the-equals-sign-in-a-scala-method-declaration) – dveim

+0

それは "実際の違い"です。 – Dima

答えて

1

、それが何かを返します。 。 最初の関数では、= signを使用しなかったので、戻り値の型はUnit(java in void)になります。 Scalaであなたはこのような何か行うことができますので、第二の機能、それがintを返すために

がある:単語 リターンZを使用せずにもかかわらず

def sum(x:Int, y:Int) = { 
    z:Int = x + y 
    z 
} 

println(sum(3, 5)) 

//output = 8 

を、それはまだ機能して最後の変数を返します。 。

def func2(x: Int, op: Int => Int):Int = { 
    op(x) //this is the last value and it will be returned 
} 

行方不明=記号は常にユニット(Javaでのボイド)を返します

関連する問題