質問のように言います。`()=> Unit`とは何ですか?
これは、コールバック関数の格納に使用されたList[() => Unit]
にあります。
私はList[type]
を理解しており、Unit
は何も返さない関数の戻り型です。
質問のように言います。`()=> Unit`とは何ですか?
これは、コールバック関数の格納に使用されたList[() => Unit]
にあります。
私はList[type]
を理解しており、Unit
は何も返さない関数の戻り型です。
(T1,...,Tn) => T
は、タイプT1
からTn
までのパラメータと戻り値のタイプT
を持つ関数のタイプです。したがって、() => Unit
は、パラメータを取らず、戻り値の型Unitを持つ関数の型です。その結果、List[() => Unit]
はそのような機能を含むリストのタイプです。
まず、機能のリストがあります。各関数はパラメータをとりません(これは、閉じ括弧が()
を意味します)。戻り値はUnit
です。結果は空白に似ています。
純粋な関数世界では、何も返さず何も返さないので、型()=>Unit
の関数は役に立ちません。しかし、Scalaは純粋に機能的な言語ではありません。副作用があります。有用であるためには、リストの関数には必ず副作用があります。彼らはコールバック関数なので、いつ発火するかについての考えも持っています。
"タイプT1からTnのパラメータ"なので、 'f(T1):Unit'、' f(T2):Unit'のような関数はそのリストの有効な型ですか? 'f(T1、T2)'のようなものはどうですか? – aitchnyu
@aitchnyu No.リスト[(T1、T2)=>ユニット] 'のリストがある場合、そのリストには2つのパラメータ(最初のタイプはT1と2番目のT2) 。だから 'f(x:T1、y:T2):Unit'という関数を' f(x:T1) 'や' f(y:T2) 'として定義することはできません。同様に 'List [()=> Unit]型のリストは、まったくパラメータを持たない関数しか格納しません。 – sepp2k