callbyname

    1熱度

    2回答

    我想創建一個函數與下面的簽名元組: def myFunction[T](functionWithName: (String, => T)): T ,這樣我可以調用它,例如,像這樣:val x = myFunction("abc" -> 4 * 3)。但是,Tuple不接受名稱參數,所以上面的簽名是無效的。 通過this answer的啓發,我想下面的隱式轉換: implicit class B

    2熱度

    1回答

    我正在參加Coursera課程的函數式編程課程,並且在某些時候他們討論了按值分類和按名稱評估技術之間的區別。他們的一些點混淆了我,他們說: 這兩種技術都降低到相同的最終值,只要: 減少的表達由純函數和 既評估終止 這似乎是一個演算定理。 你能解釋一下「純粹函數的簡化表達式」是什麼意思嗎?

    3熱度

    1回答

    doSmth(() => s)爲什麼不能編譯? 爲什麼其餘的代碼輸出「值」?有沒有辦法調用第二個函數(使用名稱參數)? object Test { def main (args: Array[String]){ lazy val s: String = "" doSmth(s) doSmth("") doSmth(() => s) }

    3熱度

    2回答

    我是新來的Scala語言,所以我會很感激,如果有人可以解釋我這個代碼片段: object C { def main(args: Array[String]) = { measure("Scala"){ println("Hello Back") } } def measure(x: String)(y: => Unit){

    4熱度

    1回答

    我有一個使用更大的索引在過程中創建大型數據結構的scala過程。因爲我想要一次完成並且不會在複雜的優先解決方案中變得難以理解,所以在使用表達式初始化的結果中使用lazy vals,該表達式可能無法在創建時評估爲正確值(或者任何其他值)該組件,但是一旦整個構建過程完成,就會這樣做。這意味着最終結果的每個組成部分都有對整個索引的閉包的合成引用,並且可能只要它們中的任何一個仍在內存中,我的索引就不能被垃

    1熱度

    1回答

    我有一個可怕的問題。我建立了許多屬性的怪異類,其中也有數組屬性。 ,如果我想引用這些與CALLBYNAME,它不會工作,讓我們來看一個例子: public sub whatsoever() Dim alfaarray() As Variant Dim g As Integer Dim obj As Object ReDim alfaarray(4)

    2熱度

    1回答

    對於DSL,我想介紹一個基本上調用Vector.fill的擴展方法,例如dup。 import scala.collection.immutable.{IndexedSeq => Vec} implicit final class Dup[A](private val in: A) extends AnyVal { def dup(n: Int): Vec[A] = Vector.f

    1熱度

    1回答

    我知道這個話題已經討論過好幾次了,但還是有些東西還不清楚。 我讀過這個問題applicative-order/call-by-value and normal-order/call-by-name differences和有件事我會澄清一勞永逸: 呼叫按姓名 由於正常秩序,但沒有減少在裏面抽象執行。例如λx。(λx.x)x根據此策略處於正常形式,儘管它包含redex(λx.x)x。 在名稱調用中,

    -1熱度

    1回答

    我一直在爲此工作了很多,但仍然無法讓我的代碼正常運行。 我有一個叫做Contact的類,它有一個只讀屬性Address。 Address類具有像Street和City這樣的屬性。現在我想將聯繫人指定的街道是這樣的: CallByName(contact, "Address.Street", CallType.Set, new_street) 但我得到一個錯誤說「Address.Street」不

    2熱度

    1回答

    我在玩具語言中有這行代碼。 print函數獲取參數列表並打印這些參數。 print(a, (a := 5, a)) 會不會有輸出一個區別,如果我使用的call-by-值或調用的名稱?如果是這樣,那麼產出會是什麼。 可以假定a被初始化爲0。