iOS/iPhone/iPad/watchOS/tvOS/MacOSX/Android プログラミング, Objective-C, Cocoa, Swiftなど
Swiftは進化が早い。Playgroundでフラクタル!と喜んでいたが、最新の環境で実行するとエラー。残念。
このまま諦めるのは悔しいので、動作するように修正してみた。
このブログで公開されているプロジェクトは、Palygroundプロジェクトにソースファイルをリソースとして追加する例だ。プロジェクトを開くといきなりエラー。そして、問題のコードがない!と戸惑ってしまうが、Viewメニューの Navigators / Show Project Navigator を選択して、プロジェクト・ウィンドウの左側にソースファイルを表示させると問題のコードが見えるようになる。
修正内容を列挙すると以下のとおり。
_ ## ComplexNumbers.swift
3c3
< public struct Complex: Equatable, Printable {
---
> public struct Complex: Equatable, CustomStringConvertible {
18c18
< let p = -2
---
> // let p = -2
68c68
< public struct ComplexRect: Equatable, Printable {
---
> public struct ComplexRect: Equatable, CustomStringConvertible {
PrintableプロトコルはCustomStringConvertibleと名前が変わったので変更する。18行めのコードは無意味なのでコメントアウトする。
16c16
< println("Elapsed time: \(elapsedTime) seconds")
---
> Swift.print("Elapsed time: \(elapsedTime) seconds")
55c55
< var c_f : CGFloat = CGFloat(c)
---
> let c_f : CGFloat = CGFloat(c)
76c76
< func viewCoordinatesToComplexCoordinates(#x: Double, y: Double, rect: CGRect) -> Complex {
---
> func viewCoordinatesToComplexCoordinates(x: Double, y: Double, rect: CGRect) -> Complex {
93,94c93,94
< var width:Double = Double(rect.size.width)
< var height:Double = Double(rect.size.height)
---
> let width:Double = Double(rect.size.width)
> let height:Double = Double(rect.size.height)
97,99c97,99
< for x in stride(from: 0, through: width, by: blockiness) {
< for y in stride(from: 0, through: height, by: blockiness) {
< let cc = viewCoordinatesToComplexCoordinates(x: x, y: y, rect: rect)
---
> for x in 0.stride(through: width, by: blockiness) {
> for y in 0.stride(through: height, by: blockiness) {
> let cc = viewCoordinatesToComplexCoordinates(x, y: y, rect: rect)
105c105
< println("Calculation time: \(elapsedTime)")
---
> Swift.print("Calculation time: \(elapsedTime)")
printlnをprintに変更する。この名前だと衝突するようなので名前空間Swiftをつける。値の変更がないという警告が出ている変数への代入をvarからletに変更する。stride関数の仕様が変わったようなので変更する。
19c19
< println("Exploring: \(triple.0)")
---
> print("Exploring: \(triple.0)")
printlnをprintに変更する。
エラーが取れて、図が表示された。