2016-10-25 19 views
1

下記のかっこを削除してprintFn hcと読みましたが、エラーが発生します。私はScalaでは、ひとつのパラメータ関数が括弧を必要としないと考えましたか?1つのパラメータ関数

case class HelloClass(arg1:String) 


object HelloWorld extends App { 
    var hc = HelloClass("Hello World") 
    printFn(hc) 

    def printFn(a1:HelloClass) : Unit = { 
    println(a1 arg1) /* or a1.arg1 */ 
    } 
} 

答えて

4

私はそれをinfix method notationと混同していると思います。 Scalaでは、obj.method(argument)またはobj method argumentのいずれかを書くことができます。あなたの例にこれを適用するに

あなたは括弧を避けたい場合は、あなたが見るも"When to use parenthesis in Scala infix notation"

this printFn hc 

を書くことができますので、あなたは、表現の「obj」の部分を必要としています。

1

私はそうProgramming Scala

からおよそ中置 .Copiedをカバーし、別の答えとして何かについて接尾を追加したいと思い、1 + 2は1と同じです。+(2)の理由 我々は同様に、単一の引数methods.1 期間と括弧をドロップすることができ、引数なしの方法が 期間なしで呼び出すことができる「インフィックス」表記。これは "postfix"表記と呼ばれます。しかし、この 接尾辞規則の使用は時々混乱することができますので、Scalaの2.10は、オプション機能を ました。

インフィックス

private def testMethod(arg1: String): String = { 
    arg1 
    } 
//this specifies current instance 
println(this testMethod "Hello Scala") 
はPostfix用例

1 toString 

関連する問題