Avatar
omochimetaru 8/25/2017 4:40 AM
infix operator +++ : PikaPlusPrecedence infix operator *** : PikaStarPrecedence precedencegroup PikaPlusPrecedence { associativity: left higherThan: PikaStarPrecedence, AssignmentPrecedence } precedencegroup PikaStarPrecedence { associativity: left }
4:40 AM
コンパイルできた。
4:41 AM
do { if (!Tok.is(tok::identifier)) { diagnose(Tok, diag::expected_precedencegroup_relation, attrName); return abortBody(); } auto name = Context.getIdentifier(Tok.getText()); auto loc = consumeToken(); relations.push_back({loc, name, nullptr}); } while (consumeIf(tok::comma)); ここの最後の行見てわかったw
4:48 AM
infix operator <-= : AssignmentPrecedence func <-= <T> (_ lvalue: inout T, _ rvalue: T) -> T { lvalue = rvalue return lvalue } var x: Int = 1 let y = x <-= 3 print("x=\(x)") print("y=\(y)")
4:48 AM
[omochi@omochi-iMac sw-op-def]$ swift a.swift x=3 y=3
4:48 AM
代入結果を返す代入演算子作れる!!
4:48 AM
これを使えばこの前のkoherのパターンが