2017-09-02 8 views
0

varを宣言したいが、後で関数を割り当てたい。スカラ:即時割り当てなしに関数(ラムダ)を保持するための変数を宣言する

どのようにそのようなvarを宣言しますか?パラメータがなくて何も返さないときは?

が、私はこれを試みたが、それが受け入れられていない。後半のコードで

private var myFunction :() 

が、私はこのようにそれにコードを割り当てると思い、私が想像:そうのよう

myFunction =() => { doSomething() } 
+0

しないでください。バールは、99%の時間内に何らかの問題に間違った解決策です。 – Dima

答えて

5

def doSomething(): Unit = ??? 

    class A { 
    private var m1: Function0[Unit] = _ 

    // later down the line 
    m1 =() => { doSomething() } 

    private var m2:() => Unit = _ 

    // later down the line 
    m2 =() => { doSomething() } 
    } 

関数リテラルの構文を使用するか、FunctionNのいずれかの特性を使用して関数の型を宣言するだけです。

編集

あなたの間違いは、無効な構文でmyFunctionを宣言しました。

構文[]はオプションパーツと{}必須の部品を示し[visibility] {var|val|lazy val} {variable-name}[:<variable-type>}[=<value]

あります。

可視性は、省略した場合はpublicとみなされます。アンダースコアについては、その意味を確認することができますin this SO post

+0

ああ、私の間違いは、私はvarに_something_を割り当てなければならないということを理解していないということでした。そして "_"が最善の解決策だと私は思いますか? (私は他の誰かが書いたScalaコードを修正しようとしていますが、自分のアプリを書くためにコンパイル言語を学ぶつもりはありませんが、Swiftのような他の言語を知っていると、とにかく)。 –

+1

@ThomasTempelmannは簡単な説明で編集しました – pedromss

+0

私の主な問題は、戻り値のない関数シグネチャの "可変型"が何であるかを明らかにしていたことです。 –

関連する問題