トップ 最新 追記

Cocoa練習帳

iOS/iPhone/iPad/watchOS/tvOS/MacOSX/Android プログラミング, Objective-C, Cocoa, Swiftなど

2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|

2016-04-17 [OSX]Mandelbrot Set Playground

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行めのコードは無意味なのでコメントアウトする。

_ ## MandelbrotView.swift

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関数の仕様が変わったようなので変更する。

_ ## Contents.swift

19c19
<     println("Exploring: \(triple.0)")
---
>     print("Exploring: \(triple.0)")

printlnをprintに変更する。

エラーが取れて、図が表示された。

画像の説明画像の説明画像の説明画像の説明

_ 【Cocoa練習帳】

http://www.bitz.co.jp/weblog/
http://ameblo.jp/bitz/(ミラー・サイト)
Qiita

トップ 最新 追記