structural-typing

    0熱度

    1回答

    我想重用現有的提取器並撰寫它們。 完美匹配B => Option[C]。 但我很困惑,我怎麼能在代碼中表達這樣的關係。 明顯的方法不適用於一個很好的理由: type Extractor[F,T] = { def unapply(from : F) : Option[T] } def bind[A,B,C](l : Extractor[A,B], r : Extractor[B,C]

    1熱度

    1回答

    中使用的方法我正在瀏覽斯卡拉代碼,並發現應用方法也用於type。 例子: type Common = { def apply: {val func: {} => {val a: A}; val c: C} => {val b: B} } 是什麼上面的代碼是什麼意思? 據我所知,這意味着Common是指所有包含apply方法的類型。但是,問題是什麼樣的應用方法是否意味着什麼?應用方法

    2熱度

    1回答

    這似乎是一個簡單的事情,但我不明白...... 這編譯: object CanFoo1 { def foo(): Unit = { println("Yup, I can foo alright") } } object CanFoo2 { def foo(): Unit = { println("And I can foo with the

    2熱度

    1回答

    我目前正在學習結構分型。我對這樣的想法持懷疑態度,認爲兩種類型被認爲是相同的,只是因爲它們碰巧有一部分共同的結構。這感覺很像靜態鴨子打字,它完全忽略了類型的語義層次。所以我把在普通對象的流動的結構打字定睛一看,也遇到以下行爲: const o:{} = {foo: true}; o.foo; // type error {}是一種結構類型和所有普通對象的超類型。因此,我可以用它註釋o,因爲{

    2熱度

    1回答

    在流動結構亞型可能會導致信息丟失: type O = {x: number, y: number}; type P = {x: number, y: number, z: number} function f(o: O) { return o.x * 2, o.y * 2, o; } const p: P = {x: 2, y: 3, z: 100}; const r =

    0熱度

    1回答

    我知道typescript有一個結構類型化機制。然而,我所期望的,如果你有一個這樣的類: 和一個這樣的定義: class ReadonlyCountry { readonly id: string; readonly name: string; } ,該類型系統將顯示碰撞,如果你與ReadonlyCountry類型返回一個對象在返回類型爲Country的函數中。看起來情

    -1熱度

    2回答

    的任何量的我有一個這樣的對象: { "0001": "a", "0002": "b", "0003": "c", ... } 我可以寫一個打字稿接口,它描述了這種類型?

    6熱度

    2回答

    是什麼關係這樣 export class Comment { likes: string; comment: string; constructor(likes: string, comment: string){ this.comment = comment; this.likes = likes; } } 這 export i

    4熱度

    1回答

    打字稿是否支持結構類型兼容性的直接測試? C#支持is運營商和類型的表面IsAssignableFrom(object instance) if (foo is SomeType) ... if (SomeType.IsAssignableFrom(foo)) ... 有沒有在打字稿進行這種檢查的一些直接的方式或者我有探測所需的每一個成員的? instanceof可能會爲手頭的情況做,但不尊

    0熱度

    1回答

    在GO,我瞭解到, 1) 程序員可以只定義上命名的類型(X)或指針(*X)的方法來命名的類型 2) X類型的顯式方法定義隱式定義了類型*X和的相同方法,反之亦然,因此,我的小寫安定是,如果我聲明, func (c Cat) foo(){ //do stuff_ } 和聲明, func (c *Cat) foo(){ // do stuff_ } 然後去編譯器爲, C