![ç»å](https://habrastorage.org/getpro/habr/post_images/086/d90/ac0/086d90ac046707600137e897946714bf.png)
æ°ããããŒãžã§ã³ã®å€æŽç¹ã¯ãäž»ã«2ã€ã®ã«ããŽãªã«åé¡ã§ããŸãã
- Swift 2.2ã§æ¢ã«å»æ¢ãããŠãããªã¢ãŒãæ©èœ
- èšèªã®æ¹å
XcodeããŒãžã§ã³7.3ã§èŠåãåãåã£ããšãã«ç解ããããããããããããã®æ©èœãæºãããŠããããããªã¢ãŒãæ©èœã®ã«ããŽãªããå§ããŸãããã
++ããã³-æŒç®å
Cèšèªã®éºç£ã®å¢åããã³æžåæŒç®åãšãã®æ©èœã¯åçŽã§ã-ç¹å®ã®å€æ°ã«1ãå ç®ãŸãã¯æžç®ããŸãã
var i = 0 i++ ++i i-- --i
ãã ããã©ã¡ããéžæãããã決å®ããããšã«ãªããšãäºæ ã¯ããè€éã«ãªããŸãã ãããã¯ããããããã¬ãã£ãã¯ã¹ãšãã¹ããã£ãã¯ã¹ã®2ã€ã®å¯èœãªãªãã·ã§ã³ã§è¡šãããšãã§ããŸãããããã¯ãã¹ãŠããšã³ãžã³ã®ãããã§æ©èœããæŒç®åã®ãªããŒãã«ãã䜿çšãŸãã¯æåŠã§ããå€ãè¿ããŸãã
ããã¯åå¿è ã«ã¯åé€ãããŠããã®ã§ååã§ã-代ããã«ä»£å ¥æŒç®åãšå ç®+ =ããã³æžç®-=ã䜿çšããŠãã ããïŒ
var i = 0 i += 1 i -= 1
ãã¡ãããå ç®ïŒ+ïŒæŒç®åãšæžç®ïŒ-ïŒæŒç®åã䜿çšã§ããã»ããä»£å ¥æŒç®åãäžç·ã«äœ¿çšã§ãããããã³ãŒããèšè¿°ãããšãã®æéãç¯çŽã§ããŸããã
i = i + 1 i = i - 1
æ £ããïŒ ãã®å€æŽã®çç±ã«ã€ããŠè©³ããç¥ãããå Žåã¯ã Chris Latnerã®ææ¡ãåç §ããŠãã ãã ã
ã«ãŒããèšè¿°ããããã®Cèšèªã¹ã¿ã€ã«ã¯æŽå²
ã€ã³ã¯ãªã¡ã³ãæŒç®åãšãã¯ãªã¡ã³ãæŒç®åã䜿çšããæãäžè¬çãªäŸã¯ãã«ãŒããèšè¿°ããããã®Cèšèªã¹ã¿ã€ã«ã§ãã æŒç®åãåé€ãããšããããã«é¢é£ãããã¹ãŠã®ãã®ãåé€ãããŸããããã¯ãåŒãæŒç®åã䜿çšããŠç¯å²ãæå®ããå Žåãšã¯ç°ãªããããããã¹ãŠãè¡ãããšã¯ã§ããªãããã§ãã
ããšãã°ãããçšåºŠã®ç¥èãããå Žåã¯ãããããforã«ãŒãã䜿çšããŠ1ãã10ãŸã§ã®æ°åã衚瀺ããŸãã
for (i = 1; i <= 10; i++) { print(i) }
Swift 3ã§ã¯ãããã¯äžå¯èœã§ãã ããã¯åœŒã®Swift 3ã®ãããã¿ã€ãã§ã-åäœäžã®éç¯å²æŒç®åïŒ...ïŒãèŠãŠã¿ãŸãããïŒ
for i in 1...10 { print(i) }
ãããã¯ãéããåŒãšçç¥ãããåŒæ°ã§for-eachã«ãŒãã䜿çšããããšãã§ããŸã ã詳现ã«ã€ããŠã¯ã ãã¡ããåç §ããŠãã ãã ã
(1...10).forEach { print($0) }
æ £ããïŒ ãã®å€æŽã®åæ©ã«ã€ããŠè©³ããç¥ãããå Žåã¯ã Erica Sadunã®ææ¡ãåç §ããŠãã ãã ã
é¢æ°ãã©ã¡ãŒã¿ãŒããå€æ°ãåé€ããŸãã
é¢æ°ãã©ã¡ãŒã¿ãŒã¯ãé¢æ°å ã§å€æŽããå¿ èŠããªããããéåžžå®æ°ãšããŠå®çŸ©ãããŸãã ãã ããå€æ°ãšããŠå®£èšãããšäŸ¿å©ãªå ŽåããããŸãã Swift 2ã§ã¯ã varããŒã¯ãŒãã䜿çšããŠé¢æ°ãã©ã¡ãŒã¿ãŒãå€æ°ãšããŠããŒã¯ã§ããŸãã ãã©ã¡ãŒã¿ãŒãvarãšããŠæå®ãããšãå€ã®ããŒã«ã«ã³ããŒãäœæããããããé¢æ°ã®æ¬äœã§å€ãå€æŽã§ããŸãã
äŸãšããŠã次ã®é¢æ°ã¯ãäžãããã2ã€ã®æ°å€ã®æå€§å ¬çŽæ°ã決å®ããŸããé«æ ¡ã§æ°åŠã®ã³ãŒã¹ãéããå Žåã¯ãããã§è©³çŽ°ããèªã¿ãã ããã
func gcd(var a: Int, var b: Int) -> Int { if (a == b) { return a } repeat { if (a > b) { a = a - b } else { b = b - a } } while (a != b) return a }
ã¢ã«ãŽãªãºã ã¯åçŽã§ããäž¡æ¹ã®æ°å€ãæ¢ã«çããå Žåãã©ã¡ãããè¿ãããŸãã ãã以å€ã®å Žåã¯ãããããæ¯èŒãã倧ããæ¹ããå°ããæ¹ãæžç®ããçµæãçãããªããŸã§å€§ããæ¹ã«å²ãåœãŠãŠããããããè¿ããŸãã ã芧ã®ãšãããaãšbãå€æ°ãšããŠããŒã¯ããããšã«ãããé¢æ°å ã®å€ãå€æŽã§ããŸãã
Swift 3éçºè ã¯é¢æ°ãã©ã¡ãŒã¿ãŒãå€æ°ãšããŠèšå®ã§ããªããªããŸãããSwiftéçºè ã¯varãšinoutãæ··åããå¯èœæ§ãããããã§ãã ãããã£ãŠãSwiftã®ææ°ããŒãžã§ã³ã§ã¯ãé¢æ°ãã©ã¡ãŒã¿ãŒããvarãåé€ãããŸãã
ãããã£ãŠãSwift 3ã§åãgcdé¢æ°ãäœæããã«ã¯ãç°ãªãã¢ãããŒããå¿ èŠã§ãã ããŒã«ã«å€æ°ã®é¢æ°ãã©ã¡ãŒã¿ãŒå€ãä¿åããå¿ èŠããããŸãã
func gcd(a: Int, b: Int) -> Int { if (a == b) { return a } var c = a var d = b repeat { if (c > d) { c = c - d } else { d = d - c } } while (c != d) return c }
ãã®æ±ºå®ã®çç±ã«ã€ããŠè©³ããç¥ãããå Žåã¯ãå ã®æãèªãããšãã§ããŸã ã
é¢æ°ãã©ã¡ãŒã¿ãŒã®ã·ãŒã±ã³ã·ã£ã«ã©ãã«ã®åäœ
é¢æ°ãã©ã¡ãŒã¿ãŒãªã¹ãã¯ã¿ãã«ã§ãããã®ãããã¿ãã«æ§é ãé¢æ°ãããã¿ã€ããšäžèŽããéãããããã䜿çšããŠé¢æ°ãåŒã³åºãããšãã§ããŸãã äŸãšããŠgcdïŒïŒé¢æ°ãåãäžããŸãã 次ã®ããã«é»è©±ããããããšãã§ããŸãã
gcd(8, b: 12)
ãŸãã¯ã次ã®ããã«é¢æ°ãåŒã³åºãããšãã§ããŸãã
let number = (8, b: 12) gcd(number)
Swift 2ã§ãããããã«ãæåã®ãã©ã¡ãŒã¿ãŒã®ã©ãã«ãæå®ããå¿ èŠã¯ãããŸããã ãã ããé¢æ°ãåŒã³åºããšãã¯ã2çªç®ïŒããã³ãã®ä»ã®ãã©ã¡ãŒã¿ãŒïŒã®ã©ãã«ãæå®ããå¿ èŠããããŸãã
ãã®æ§æã¯åå¿è ã®éçºè ã«ãšã£ãŠãããã«ãããããã©ãã«ã®åäœãæšæºåããããã«èšèšãããŠããŸãã Swiftã®æ°ããããŒãžã§ã³ã§ã¯ã次ã®ããã«é¢æ°ãåŒã³åºãããšãã§ããŸãã
gcd(a: 8, b: 12)
æåã®ãã©ã¡ãŒã¿ãŒã®ã©ãã«ãæ瀺çã«æå®ããå¿ èŠããããŸãã ããããªããšãXcode 8ã¯ãšã©ãŒã¡ãã»ãŒãžã衚瀺ããŸãã
ãã®å€æŽã«å¯Ÿããæåã®åå¿ã¯ããOMGïŒ æ¢åã®ã³ãŒãã«å€ãã®å€æŽãå ããå¿ èŠããããŸããã ããªãã¯æ£ããã ãããã¯ããããã®å€æŽã§ãã ãããã£ãŠãAppleã¯ãé¢æ°åŒã³åºããã©ã¡ãŒã¿ãŒã®æåã®ã©ãã«ãæå¶ããæ¹æ³ãæäŸããŠããŸãã 以äžã«ç€ºãããã«ãæåã®ãã©ã¡ãŒã¿ãŒã«äžç·ãè¿œå ã§ããŸãã
func gcd(_ a: Int, b: Int) -> Int { ... }
ããã«ãããæåã®ã©ãã«ãæå®ããã«ãå€ãã¡ãœããã䜿çšããŠé¢æ°ãåŒã³åºãããšãã§ããŸãã ããã«ãããSwift 2ããSwift 3ãžã®ã³ãŒãã®ç§»è¡ãã¯ããã«ç°¡åã«ãªããŸãã
ãã®å€æŽã®åæ©ãšæå³ã«ã€ããŠã¯ã ãã®æãèªãããšãã§ããŸã ã
æååãšããŠã®ã»ã¬ã¯ã¿ãŒã¯äœ¿çšãããªããªããŸãã
ãã¿ã³ãã¯ãªãã¯ããŠã¢ã¯ã·ã§ã³ãå®è¡ããŠã¿ãŸããããã¹ããŒãªãŒããŒãã§ã¯ãªãããã¬ã€ã°ã©ãŠã³ãã®ã¿ã䜿çšããŸãã
// 1 import UIKit import XCPlayground // 2 class Responder: NSObject { func tap() { print("Button pressed") } } let responder = Responder() // 3 let button = UIButton(type: .System) button.setTitle("Button", forState: .Normal) button.addTarget(responder, action: "tap", forControlEvents: .TouchUpInside) button.sizeToFit() button.center = CGPoint(x: 50, y: 25) // 4 let frame = CGRect(x: 0, y: 0, width: 100, height: 50) let view = UIView(frame: frame) view.addSubview(button) XCPlaygroundPage.currentPage.liveView = view
ããªãå€ãã®ã€ãã³ããããã§çºçããã®ã§ããããã段éã«åããŸãããã
- UIKitããã³XCPlaygroundãã¬ãŒã ã¯ãŒã¯ãã€ã³ããŒãããŸã-ãã¿ã³ãäœæãããã¬ã€ã°ã©ãŠã³ããšãã£ã¿ãŒã§è¡šç€ºããå¿ èŠããããŸãã
- ãŠãŒã¶ãŒããã¿ã³ãã¯ãªãã¯ããŠã¿ãŒã²ãããäœæãããšãã«å®è¡ãããã¯ãªãã¯æ¹æ³ã決å®ããŸããïŒ ã»ã¬ã¯ã¿ã¯Objective-Cã¡ãœããã§ã®ã¿æ©èœããããããã¿ã³ã®è«çãªããžã§ã¯ãã¯ãã®åºæ¬ã¯ã©ã¹NSObjectã§ãã
- ãã¿ã³ã®å®£èšãšããããã£ã®èšå®ã
- ç¹å®ã®ãµã€ãºã®ãã¥ãŒãäœæãããã¥ãŒã«ãã¿ã³ãè¿œå ããŠããã¬ã€ã°ã©ãŠã³ããšãã£ã¿ãŒã®ã¢ã·ã¹ã¿ã³ãã«è¡šç€ºããŸãã
ãã€ã©ã€ããããã³ãŒããèŠãŠãã ããã ãã¿ã³ã»ã¬ã¯ã¿ãŒã¯æååã§ãã ééã£ãŠå ¥åãããšãã³ãŒãã¯ã³ã³ãã€ã«ãããŸããã察å¿ããã¡ãœãããèŠã€ãããªãå¯èœæ§ããããããå®è¡äžã«å€±æããŸãã
æœåšçãªã³ã³ãã€ã«æã®åé¡ãä¿®æ£ããããã«ãSwift 3ã¯ã»ã¬ã¯ã¿ãŒæååã#selectorïŒïŒããŒã¯ãŒãã«çœ®ãæããŸããã ããã«ãããã¡ãœããåãæ£ããæå®ããªããšãã³ã³ãã€ã©ãŒãåé¡ãæ©æã«æ€åºã§ããŸãã
button.addTarget(responder, action: #selector(Responder.tap), for: .touchUpInside)
ãã®å€æŽã®çç±ãç解ããã«ã¯ã Doug Gregorã®ææ¡ãèªãã§ãã ããã
ããã¯ãªã¢ãŒãæ©èœçšã§ãã 次ã«ãèšèªã®è¿ä»£åã®äž»èŠãªãã€ã³ãã«ç§»ããŸãããã
æååãšããŠã®ããŒãã¹
ãã®é¢æ°ã¯åã®é¢æ°ãšäŒŒãŠããŸããã ããŒå€ã³ãŒãã£ã³ã° ïŒKVCïŒããã³ããŒå€ç£èŠïŒKVOïŒã«é¢é£ããŠããŸãã
class Person: NSObject { var name: String = "" init(name: String) { self.name = name } } let me = Person(name: "Cosmin") me.valueForKeyPath("name")
ãšã³ã³ãŒãã®Key-ValueãšäžèŽããPersonã¯ã©ã¹ãäœæããã€ãã·ã£ã©ã€ã¶ãŒã«ãã£ãŠæå®ãããã¯ã©ã¹ã§èªåã®IDãäœæãã KVCã䜿çšããŠååãèšå®ããŸãã
ç¹°ãè¿ããŸãããééã£ãæäœããããšããã¹ãŠãççºããŸãïŒ
幞ããªããšã«ãããã¯Swift 3ã§ã¯çºçããªããªããŸãããããŒãã¹ã¯#keyPathïŒïŒåŒã«çœ®ãæããããŸããã
class Person: NSObject { var name: String = "" init(name: String) { self.name = name } } let me = Person(name: "Cosmin") me.value(forKeyPath: #keyPath(Person.name))
ãã®å€æŽã®çç±ãç解ããã«ã¯ãDavid Heartsã®ææ¡ãèªãã§ãã ããã
NSããŒã¹ã¿ã€ããã¬ãã£ãã¯ã¹ãåé€
åºæ¬ã¿ã€ãã®NSãã¬ãã£ãã¯ã¹ãåé€ããŸããã ä»çµã¿ãèŠãŠã¿ãŸãããã å žåçãªäŸã¯JSONã§ã®äœæ¥ã§ãïŒ
let file = NSBundle.mainBundle().pathForResource("tutorials", ofType: "json") let url = NSURL(fileURLWithPath: file!) let data = NSData(contentsOfURL: url) let json = try! NSJSONSerialization.JSONObjectWithData(data!, options: []) print(json)
åºæ¬ã¯ã©ã¹ã䜿çšããŠããã¡ã€ã«ã«æ¥ç¶ããããã«å¿ããŠJSON圢åŒã§ããŒã¿ãæœåºã§ããŸããNSBundle-> NSURL-> NSData-> NSJSONSerializationã
NSãã¬ãã£ãã¯ã¹ã¯Swift 3ã§ã¯äœ¿çšãããªãããããã¹ãŠãã³ãã«-> URL->ããŒã¿-> JSONSerializationïŒïŒã«ãªããŸãã
let file = Bundle.main().pathForResource("tutorials", ofType: "json") let url = URL(fileURLWithPath: file!) let data = try! Data(contentsOf: url) let json = try! JSONSerialization.jsonObject(with: data) print(json)
ãã®åœåå€æŽæé ã«ã€ããŠã¯ã Tony ParkerãšPhilip Hauslerã«ãã£ãŠæžããããã®æã確èªã§ããŸãã
M_PI察.pi
äžããããååŸã®åãšåã®é¢ç©ãèšç®ããŸãããïŒ
let r = 3.0 let circumference = 2 * M_PI * r let area = M_PI * r * r
Swiftã®å€ãããŒãžã§ã³ã§ã¯ã M_PIã䜿çšããŠpiå®æ°ã瀺ããŸãã Swift 3ã¯ãå®æ°piãFloat ã Double ãããã³CGFloatåã«çµ±åããŸã ã
Float.pi Double.pi CGFloat.pi
äžèšã®ã³ãŒãã¹ããããã¯ãSwift 3ã§æ¬¡ã®ããã«èšè¿°ãããŸãã
let r = 3.0 let circumference = 2 * Double.pi * r let area = Double.pi * r * r
åæšè«ã䜿çšãããšãåãçç¥ããããšãã§ããŸãã ãããçãããŒãžã§ã³ã§ãïŒ
let r = 3.0 let circumference = 2 * .pi * r let area = .pi * r * r
ã°ã©ã³ãã»ã³ãã©ã«æŽŸé£
Grand Central Dispatchã¯ãã¡ã€ã³ã¹ã¬ããã®ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ããããã¯ããªããããã¯ãŒã¯æäœã«äœ¿çšãããŸãã Cèšèªã§æžãããŠããããã®APIã¯ãéåæãã¥ãŒã®äœæãæäœã®å®è¡ãªã©ã®åçŽãªã¿ã¹ã¯ãå®è¡ããããšãããåå¿è ã®éçºè ã«ãšã£ãŠéåžžã«å°é£ã§ãã
let queue = dispatch_queue_create("Swift 2.2", nil) dispatch_async(queue) { print("Swift 2.2 queue") }
Swift 3ã¯ããªããžã§ã¯ãæåã®ã¢ãããŒããæ¡çšããããšã«ããããã¹ãŠã®å®åã³ãŒããšåé·ãªè³æãæé€ããŸãã
let queue = DispatchQueue(label: "Swift 3") queue.async { print("Swift 3 queue") }
ãã®å€æŽã®è©³çŽ°ã«ã€ããŠã¯ã Matt Wrightãã芧ãã ããã
ã³ã¢ã°ã©ãã£ãã¯ã¹ãããè¿ éã«ãªããŸãã
Core Graphicsã¯åŒ·åãªã°ã©ãã£ãã¯ãã¬ãŒã ã¯ãŒã¯ã§ãããGCDã«äŒŒãCã¹ã¿ã€ã«ã®ã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšããŸãã
let frame = CGRect(x: 0, y: 0, width: 100, height: 50) class View: UIView { override func drawRect(rect: CGRect) { let context = UIGraphicsGetCurrentContext() let blue = UIColor.blueColor().CGColor CGContextSetFillColorWithColor(context, blue) let red = UIColor.redColor().CGColor CGContextSetStrokeColorWithColor(context, red) CGContextSetLineWidth(context, 10) CGContextAddRect(context, frame) CGContextDrawPath(context, .FillStroke) } } let aView = View(frame: frame)
DrawRectïŒïŒã¡ãœããããªãŒããŒã©ã€ãããŠUIViewã¯ã©ã¹ãæ¡åŒµããããšã«ããããã¥ãŒãã¬ãŒã ãäœæããŸãã
Swift 3ã¯å®å šã«ç°ãªãã¢ãããŒããåããŸã-æåã«çŸåšã®ã°ã©ãã£ãã¯ã³ã³ããã¹ããå±éãããã¹ãŠã®æç»æäœãå®è¡ããŠãããããã«é¢é£ä»ããããŸãã
let frame = CGRect(x: 0, y: 0, width: 100, height: 50) class View: UIView { override func draw(_ rect: CGRect) { guard let context = UIGraphicsGetCurrentContext() else { return } let blue = UIColor.blue().cgColor context.setFillColor(blue) let red = UIColor.red().cgColor context.setStrokeColor(red) context.setLineWidth(10) context.addRect(frame) context.drawPath(using: .fillStroke) } } let aView = View(frame: frame)
æ³šïŒ DrawRectïŒïŒãåŒã³åºãåã«ã³ã³ããã¹ãã¯ãŒãã«ãªããããã¬ãŒãåŒã䜿çšããŠã³ã³ããã¹ããå±éããå¿ èŠããããŸã ã詳现ã¯ãã¡ããã芧ãã ãã ã
åè©ãšåè©ã®åœåèŠçŽ
ææ³ã®æéïŒ Swift 3ã®ã¡ãœããã®ã°ã«ãŒãã¯ã2ã€ã®ã«ããŽãªã«åé¡ãããŸããç¹å®ã®æå³ãè¿ãã¡ãœãã-åè©ãæå³ããŸã-ãšç¹å®ã®ã¿ã€ãã®ã¢ã¯ã·ã§ã³ãå®è¡ããã¡ãœãã-åè©ãæå³ããŸãã
10ãã1ãžã®åºåã¯ããã§å®è¡ãããŸãïŒ
for i in (1...10).reverse() { print(i) }
ç¯å²ãå€æŽããã«ã¯ã reverseïŒïŒã¡ãœããã䜿çšããŸãã Swift 3ã¯å ã®ç¯å²ãéé ã§è¿ãããããã®æäœãåè©ãšããŠæ±ããŸãã 圌ã¯ã¡ãœããã«æ¥å°ŸèŸãedããè¿œå ããŸãã
for i in (1...10).reversed() { print(i) }
é åã®å 容ã衚瀺ããããã®ã¿ãã«/ã¿ãã«ã®æãäžè¬çãªäœ¿çšæ³ïŒ
var array = [1, 5, 3, 2, 4] for (index, value) in array.enumerate() { print("\(index + 1) \(value)") }
Swift 3ã¯ããã®é åã®çŸåšã®ã€ã³ããã¯ã¹ãšå€ãå«ãã¿ãã«ãè¿ããããã«ãµãã£ãã¯ã¹ãedããè¿œå ããããããã®ã¡ãœãããåè©ãšããŠæ±ããŸãã
var array = [1, 5, 3, 2, 4] for (index, value) in array.enumerated() { print("\(index + 1) \(value)") }
å¥ã®äŸã¯é åã®ãœãŒãã§ãã é åãæé ã§äžŠã¹æ¿ããæ¹æ³ã®äŸã次ã«ç€ºããŸãã
var array = [1, 5, 3, 2, 4] let sortedArray = array.sort() print(sortedArray)
Swift 3ã¯ãœãŒããããé åãè¿ãããããã®æäœãåè©ãšããŠæ±ããŸãã sortã¡ãœããã¯ã sortedãšåŒã°ããããã«ãªããŸãã ïŒ
var array = [1, 5, 3, 2, 4] let sortedArray = array.sorted() print(sortedArray)
äžéå®æ°ã䜿çšããã«é åããœãŒãããŸãããã Swift 2ã§ã¯ã次ã®ããã«é¢æ°ãåŒã³åºãããšãã§ããŸãã
var array = [1, 5, 3, 2, 4] array.sortInPlace() print(array)
sortInPlaceïŒïŒã䜿çšããŠãå¯å€é åããœãŒãããŸãã Swift 3ã¯ãå€ãè¿ããã«å®éã®ãœãŒããè¡ãããããã®ã¡ãœãããåè©ãšããŠæ±ããŸãã ã¢ã¯ã·ã§ã³ã説æããåºæ¬èªã®ã¿ã䜿çšããŸãã ãããã£ãŠã sortInPlaceïŒïŒã¯ sortïŒïŒãšåŒã°ããããã«ãªããŸãã ã
var array = [1, 5, 3, 2, 4] array.sort() print(array)
åœåèŠåã®è©³çŽ°ã«ã€ããŠã¯ã API Design Guidelinesãã芧ãã ããã
Swift API
Swift 3ã¯ãã®APIã«å¯ŸããŠåçŽãªå²åŠãæ¡çšããŠããŸã-äžèŠãªåèªãçç¥ããããã«ãäœããåé·ã§ãããã³ã³ããã¹ãããåãåºããå Žåã¯åé€ããŸãïŒ
- XCPlaygroundPage.currentPageã¯PlaygroundPage.currentã«ãªããŸã
- button.setTitleïŒforStateïŒã¯button.setTitleïŒforïŒã«ãªããŸã
- button.addTargetïŒã¢ã¯ã·ã§ã³ãforControlEventsïŒã¯button.addTargetïŒã¢ã¯ã·ã§ã³ãforïŒã«ãªããŸã
- NSBundle.mainBundleïŒïŒã¯Bundle.mainïŒïŒã«ãªããŸã
- NSDataïŒcontentsOfURLïŒã¯URLïŒcontentsOfïŒã«ãªããŸã
- NSJSONSerialization.JSONObjectWithDataïŒïŒã¯JSONSerialization.jsonObjectïŒwithïŒã«ãªããŸã
- UIColor.blueColorïŒïŒã¯UIColor.blueïŒïŒã«ãªããŸã
- UIColor.redColorïŒïŒã¯UIColor.redïŒïŒã«ãªããŸã
åæå
Swift 3ã¯åæãããããã£ãšããŠæ±ãããã upperCamelCaseã§ã¯ãªãlowerCamelCaseã䜿çšããŸãã
- .Systemã¯.systemã«ãªããŸã
- .TouchUpInsideã¯.touchUpInsideã«ãªããŸã
- .FillStrokeã¯.fillStrokeã«ãªããŸã
- .CGColorã¯.cgColorã«ãªããŸã
@discardableResult
Swift 3ã§ã¯ãé¢æ°ãŸãã¯ã¡ãœããã®æ»ãå€ã䜿çšããŠããªãå ŽåãXcodeã¯èŠåã衚瀺ããŸãã 以äžã«äŸã瀺ããŸãã
![ç»å](http://www.appcoda.com/wp-content/uploads/2016/06/discardable-result-1.png)
äžèšã®ã³ãŒãã§ã¯ã printMessageã¡ãœããã¯åŒã³åºãå ã®åä¿¡ã¡ãã»ãŒãžãè¿ããŸãã ãã ããæ»ãå€ã¯äœ¿çšãããŸããã ããã¯æœåšçãªåé¡ã«ãªãå¯èœæ§ããããããSwift 3ã®ã³ã³ãã€ã©ã¯èŠåã衚瀺ããŸãã
ãã®å ŽåãåŠçãããæ»ãå€ã§ãªãå Žåã ã¡ãœãã宣èšã«@discardableResultãè¿œå ãããšãèŠåãæå¶ããããšãã§ããŸãã
override func viewDidLoad() { super.viewDidLoad() printMessage(message: "Hello Swift 3!") } @discardableResult func printMessage(message: String) -> String { let outputMessage = "Output : \(message)" print(outputMessage) return outputMessage }
ãããã«
Swift 3ããã¹ãŠã§ããSwiftã®æ°ããããŒãžã§ã³ã¯ãã¡ãžã£ãŒãªãªãŒã¹ã®1ã€ã§ãããèšèªãããã«æ¹åãããŠããŸãã æ¢åã®ã³ãŒãã«ç¢ºãã«åœ±é¿ãäžããå¯èœæ§ã®ããå€ãã®åºæ¬çãªå€æŽãå«ãŸããŠããŸãã ãã®èšäºãå€æŽãããããç解ããã®ã«åœ¹ç«ã€ããšãé¡ã£ãŠããŸãããŸãããããžã§ã¯ããSwiftã«ç§»è¡ããæéãç¯çŽã§ããããšãé¡ã£ãŠããŸãã