Avatar
Kishikawa Katsumi 9/6/2018 2:51 AM
package main import "fmt" type path string func Save(p path) string { return "Saved" } func main() { var p path p = "/tmp/xxx" fmt.Println(Save(p)) // OK s := "/tmp/xxx" fmt.Println(Save(s)) // Compile Error fmt.Println(Save("/tmp/xxx")) // OK } GoのtypeはSwiftと若干違うなと思ったことがあって、Goは2つ目のコードをコンパイルエラーにしてくれて、「おっ」と思ったけどリテラルを渡すことは防止できなかった。
2:51 AM
@swiftbot import Foundation typealias Path = String func save(path: Path) -> String { return "Saved" } var p: Path = "/tmp/xxx" print(save(path: p)) var s: String = "/tmp/xxx" print(save(path: s)) print(save(path: "/tmp/xxx")) Swiftは全部通るはず。
🛠 1