看板
[ PLT ]
討論串[問題] 如何處理 conditional operator
共 6 篇文章
內容預覽:
我正在寫一個類似 Java (但不是 Java) 語言的 compiler,. 對於 a ? b : c 這種 conditional operator 的型別不知該如和處理,. 不知道有沒有人知道這個部份應該要怎麼做?. 我的問題是這樣, 假設型別 X 跟 Y 有這樣的繼承架構 :. interf
(還有1348個字)
內容預覽:
沒有經驗,只是一些想法和疑問 @@. 我試了一下 javac, 單純的 func(new X()) 和 func(new Y()) 也是 ambiguous.. 這個意思不就是除了 void 以外,所有 exp 的 result type 都必須是集合?. 不過似乎只需要針對有 overload 的
(還有137個字)
內容預覽:
如果沒有 a ? b : c 這種東西, 不用集合就可以檢查了.... new X() 的型別就是唯一的 X, 所以呼叫 func(new X()) 只要一一比對. func(A), func(int)... 這些名稱跟 parameter 個數符合的 methods,. 用類似 Type.isAs
(還有361個字)
內容預覽:
這完全就是 Java compiler 的 method resolution algorithm. Java Spec. ed 1 & 2 這個 ? : 都是不合法的 -- then part 和 else part. 都是 reference type 的時候要不 identical, 要不 a
(還有656個字)
內容預覽:
Mmm... 這樣好像比較了解要怎麼做了, 所以基本上一定還是要找出 unify set,. 也就是 { A, N1, N2 }, 然後在搜尋 compatible methods 的階段,. 只要 formal paramter type T 跟對應位置的 expression unify set
(還有262個字)