More Related Content
Similar to まだSwiftで消耗してるの? (14)
まだSwiftで消耗してるの?
- 8. 用語
class Hoge {
func instanceMethod(string str: String) {
}
}
外部引数名
内部引数名
• 外部引数(External Parameter)
• 内部引数(Local Parameter)
- 11. class Hoge {
// 外部引数名を指定していない
func instanceMethod1(str1: String, str2: String)->String {
}
}
let word = hoge.instanceMethod1(“hello”, str2:“world”)
String *word = [hoge instanceMethod1:@“hello”
str2:@“world”];
Swiftでこのメソッドを呼び出す場合
Objective-Cでこのメソッドを呼び出す場合
第2引数以降の内部引数名が外部引数名に
- 15. class Hoge {
// 外部引数名”string”と”andString”を指定する
func instanceMethod2(string str1: String,
andString str2: String) -> String {
}
}
let word = hoge.instanceMethod2(string:“hello”,
andString:“world”)
String *word = [hoge instanceMethod2WithString:@“hello”
andString:@“world”];
Swiftでこのメソッドを呼び出す場合
Objective-Cでこのメソッドを呼び出す場合
外部引数名を指定されている
自動でWith+外部引数名の頭文字が大文字に!
- 19. class Hoge {
// 明示的にby付けたらWithByって自動で付加されるか実験
func instanceMethod(byString str1: String,
andString str2: String) -> String {}
// 同じく明示的にfor
func instanceMethod(forString str1: String,
andString str2: String) -> String {}
}
String *word = [hoge instanceMethodByString:@“hello”
andString:@“world”];
なんと、Objective-Cで外部引数名に前置詞を指定すると
Withなくなって定義される!!
String *word = [hoge instanceMethodForString:@“hello”
andString:@“world”];
Objective-Cでこのメソッドを呼び出す場合
- 20. Withがなくなる前置詞を調査
• Withがなくなった前置詞
• for, by, in, on, of, to, at, from, below
• Withがなくならなかった前置詞
• over, under, about, round, around
- 24. class Hoge {
// 外部引数名と内部引数名を同じにする場合は引数名に#を付ける
func instanceMethod3(#str1: String,
str2: String) -> String {
}
}
let word = hoge.instanceMethod3(str1:“hello”,
str2:“world”)
String *word = [hoge instanceMethodWithStr1:@“hello”
str2:@“world”];
Swiftでこのメソッドを呼び出す場合
Objective-Cでこのメソッドを呼び出す場合
str1 str1: Stringという形にはしない
str1が外部引数名となっている
- 28. class Hoge {
// 第一でない外部引数名が自動なのをやめる場合は_を付ける
func instanceMethod4(str1: String,
_ str2: String) -> String {
}
}
let word = hoge.instanceMethod4(“hello”, “world”)
String *word = [hoge instanceMethod4:@“hello”
:@“world”];
Swiftでこのメソッドを呼び出す場合
Objective-Cでこのメソッドを呼び出す場合
Objective-Cでは珍しい形になった
- 31. class Age {
// イニシャライザ
init (str: String) { } // 1. 外部引数名は指定しない
init (_ str: String) { } // 2. イニシャライザの引数名に_
}
let age1 = Age(str: “18”) // 1. 内部引数名が外部引数名に!
let age2 = Age(“18”) // 2. 省略されてシンプル
Hoge *hoge1 = [Age alloc] initWithStr:@“18”]; // 1. With+Str
Hoge *hoge2 = [Age alloc] init:@“18”]; // 2. 省略された
Swiftでこのイニシャライザを呼び出す場合
Objective-Cでこのメソッドを呼び出す場合
省略はObjective-Cでは少し違和感のある珍しい形に
イニシャライザの場合は第1引数でも内部引数名が外部引数名になる