!extend::vvvvv
WWDC2014で発表されたAppleの新言語Swiftについて語りましょう
関連スレ
プログラミング言語Swift Part4
http://egg.2ch.net/test/read.cgi/mac/1484763495/
[SDK]iPhoneアプリ開発初心者質問箱49[touch][iPad]
https://egg.5ch.net/test/read.cgi/mac/1538778915/
Xcode part14
http://egg.2ch.net/test/read.cgi/mac/1476190499/
Swiftアンチスレ part1
http://mevius.2ch.net/test/read.cgi/tech/1458491343/
前スレ
Swift part11
https://mevius.5ch.net/test/read.cgi/tech/1498640309/
スレ立て時は1行目に「!extend::vvvvv」
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
Swift part12
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ af5b-F79V)
2018/10/29(月) 22:08:16.87ID:gm+ugNlu056デフォルトの名無しさん (ワッチョイ b501-vz6I)
2019/02/22(金) 21:17:19.23ID:3RIToTiQ0 swiftからObj-Cに移行してるんじゃね?
57デフォルトの名無しさん (ワッチョイ 3a2d-4fA7)
2019/02/22(金) 23:07:08.22ID:4P5kVTUh0 おれSwift好きだけどなあ
58デフォルトの名無しさん (ササクッテロル Spbd-AIQn)
2019/02/22(金) 23:47:46.55ID:5CNp19nrp Obj-Cはユニットの中身はCで、ユニットに「◯◯をやれ」ってコマンドを送るんだよーって
おそろしくわかりやすい分割でCを拡張した言語だから
半自動的に「◯◯をやれ」ってコマンドの形でまとまらない単位は
そのままCで書く、言語仕様による見通しの良さが特徴だったんだけど
swiftは単にオブジェクト指向やモダン言語の議論から生えてきた言語の一つで
あれはあれでまとまってるけど、むしろObj-C固有の特徴からするとどこまでオブジェクトにするかの見通し面で明確に『退歩』してるんでなぁ…
おそろしくわかりやすい分割でCを拡張した言語だから
半自動的に「◯◯をやれ」ってコマンドの形でまとまらない単位は
そのままCで書く、言語仕様による見通しの良さが特徴だったんだけど
swiftは単にオブジェクト指向やモダン言語の議論から生えてきた言語の一つで
あれはあれでまとまってるけど、むしろObj-C固有の特徴からするとどこまでオブジェクトにするかの見通し面で明確に『退歩』してるんでなぁ…
59デフォルトの名無しさん (ワッチョイ 6663-1onY)
2019/02/23(土) 18:41:57.75ID:U8e9jppl0 Objective-Cがわかんないやつって結局Cがわからないって言ってるのと同値だよね
Objective-C→Swiftにしてどのくらい生産性が上がったのか知りたいね
Objective-C→Swiftにしてどのくらい生産性が上がったのか知りたいね
60デフォルトの名無しさん (ワッチョイ 5e6a-281i)
2019/02/26(火) 22:46:30.11ID:x6FxfNAS0 カスタムView(以下:viewA)を作って、その初期化時にviewAにサブView(以下:viewB)を追加した場合、viewAだけに処理することはできますか?
変な聞き方なので例を言うと、
名刺のようなViewで、紙の部分がviewA、名前の文字がviewB
viewAだけをいじりたいです。
viewAが名刺の紙というより名刺自体になっているというのは分かっています。
変な聞き方なので例を言うと、
名刺のようなViewで、紙の部分がviewA、名前の文字がviewB
viewAだけをいじりたいです。
viewAが名刺の紙というより名刺自体になっているというのは分かっています。
61デフォルトの名無しさん (ワッチョイ 5e66-DwjH)
2019/02/27(水) 00:22:43.96ID:Tz7xGFct0 viewAは名刺の紙のままだよ。あくまもでも、名刺の紙に名前の文字(viewB)が乗っている感じでしょ
「viewAだけに処理すること」「viewAだけをいじりたい」が何をしたいのかわからん
「viewAだけに処理すること」「viewAだけをいじりたい」が何をしたいのかわからん
62デフォルトの名無しさん (ワッチョイ 0abd-0zLl)
2019/03/24(日) 17:29:51.50ID:vZfAIeqv0 Swift結局、コンパイル糞遅いし
日本じゃ全面移行なんてアホな開発会社多いけど
グーグルもFaceBookもライブラリ見てると
あくまで適材適所だよ
コンパイル速度が糞遅いのを考えると、大型化すればするほど
Objective-Cより開発速度は下がる
日本じゃ全面移行なんてアホな開発会社多いけど
グーグルもFaceBookもライブラリ見てると
あくまで適材適所だよ
コンパイル速度が糞遅いのを考えると、大型化すればするほど
Objective-Cより開発速度は下がる
63デフォルトの名無しさん (ワッチョイ de63-0zLl)
2019/03/25(月) 21:59:24.74ID:G2lOih7G0 そんなに遅いんか
64デフォルトの名無しさん (ワッチョイ 5f63-ruiG)
2019/03/26(火) 10:49:57.40ID:Vbs/enup0 Swift 5ついにキタ
65デフォルトの名無しさん (ワッチョイ b3b3-u4BX)
2019/03/26(火) 15:19:39.77ID:F8U/TA3Z0 PythonやJavascriptなどの動的言語呼出しができるようになったね。 まだ使いにくそうだけど。
66デフォルトの名無しさん (ワッチョイ 2a07-wx82)
2019/03/27(水) 11:37:00.65ID:s6LMulna0 無限アラートのブラクラで逮捕されて人いる。
for 文と UIView とそのサブクラスのインスタンス化をすることができる人も脳内にウィルスを保持しているから逮捕すべきだね。
for 文と UIView とそのサブクラスのインスタンス化をすることができる人も脳内にウィルスを保持しているから逮捕すべきだね。
67デフォルトの名無しさん (ブーイモ MM27-STzE)
2019/03/27(水) 13:19:30.96ID:/e9017T+M >>66
ついさっき無罪判決出たんだが?
ついさっき無罪判決出たんだが?
68デフォルトの名無しさん (ブーイモ MM27-STzE)
2019/03/27(水) 13:20:25.26ID:/e9017T+M 間違えた、無限alertか
無罪判決はcoinhiveだった
無罪判決はcoinhiveだった
69デフォルトの名無しさん (ワッチョイ de63-0zLl)
2019/03/27(水) 19:57:34.98ID:OhzP0gAW0 無限forで起訴されて裁判までいったのかと思った
70デフォルトの名無しさん (ワッチョイ 9fba-FlV9)
2019/03/30(土) 19:49:07.65ID:WwwBiZRG0 Pythonは挫折しちゃったけど
Swiftは頑張れてる
Swiftは頑張れてる
71デフォルトの名無しさん (ササクッテロ Sp4f-9EXh)
2019/03/30(土) 21:06:17.09ID:o86gGdeEp >>70 どう言う意味? python を取り込まない限り長くはないぞ。 相性良さそうだけどな。
72デフォルトの名無しさん (ワッチョイ 9fba-FlV9)
2019/03/31(日) 10:35:26.31ID:A9fwf2iN073デフォルトの名無しさん (ワッチョイ fb5f-mad5)
2019/03/31(日) 11:23:43.71ID:bRWYuFR70 swift5書き換えでつまづいています。
Data型でc構造体を触る下記の方法がdeprecatedになりました。どのように書き換えれば良いのか教えて下さい。
typealias MutableCStructPtr = UnsafeMutablePointer<cStruct>
var cStruct : Data = Data.init(count: sizeOfCStruct)
cStruct.withUnsafeMutableBytes({(ptr : MutableCStruct) in
cStruct.pointee.param1 = newValue
})
代わりにUnsafeMutableRawPointer経由でc構造体を操作する方法を探していますが見つけられていません。
Data型でc構造体を触る下記の方法がdeprecatedになりました。どのように書き換えれば良いのか教えて下さい。
typealias MutableCStructPtr = UnsafeMutablePointer<cStruct>
var cStruct : Data = Data.init(count: sizeOfCStruct)
cStruct.withUnsafeMutableBytes({(ptr : MutableCStruct) in
cStruct.pointee.param1 = newValue
})
代わりにUnsafeMutableRawPointer経由でc構造体を操作する方法を探していますが見つけられていません。
74デフォルトの名無しさん (ワッチョイ fb5f-mad5)
2019/03/31(日) 19:07:54.98ID:bRWYuFR70 以下の記述ではコンパイルが通りました。
この記述では、copyOnWriteされない理解で良いでしょうか。
typealias MutableCStructPtr = UnsafeMutablePointer<cStruct>
var structData : Data = Data.init(count: sizeOfCStruct)
structData.withUnsafeMutableBytes { (p:UnsafeMutableRawBufferPointer) in
let ptr : MutableCStructPtr = p.bindMemory(to: MutableCStructPtr.self).first!
ptr.pointee.param1 = newValue
}
あるいは
structData.withUnsafeMutableBytes { (p:UnsafeMutableRawBufferPointer) in
let ptr : MutableCStructPtr = unsafeBitCast(p, to: MutableCStructPtr.self)
ptr.pointee.param1 = newValue
}
この記述では、copyOnWriteされない理解で良いでしょうか。
typealias MutableCStructPtr = UnsafeMutablePointer<cStruct>
var structData : Data = Data.init(count: sizeOfCStruct)
structData.withUnsafeMutableBytes { (p:UnsafeMutableRawBufferPointer) in
let ptr : MutableCStructPtr = p.bindMemory(to: MutableCStructPtr.self).first!
ptr.pointee.param1 = newValue
}
あるいは
structData.withUnsafeMutableBytes { (p:UnsafeMutableRawBufferPointer) in
let ptr : MutableCStructPtr = unsafeBitCast(p, to: MutableCStructPtr.self)
ptr.pointee.param1 = newValue
}
75デフォルトの名無しさん (ワッチョイ 122d-78ua)
2019/04/09(火) 01:17:25.38ID:CfeI8pXT0 ちょっと高度過ぎて、素人なので分からないな
76デフォルトの名無しさん (ドコグロ MMc9-6WsE)
2019/04/09(火) 18:27:29.04ID:uGaRLF8uM SwiftってObjective-C的なの
77デフォルトの名無しさん (ワッチョイ c281-WkdJ)
2019/04/09(火) 18:50:05.94ID:b0dEtQwc0 so nano
78デフォルトの名無しさん (ワッチョイ 13d2-dTFq)
2019/04/14(日) 08:33:08.57ID:PdhWhUtz0 、
79デフォルトの名無しさん (ササクッテロ Sp85-Mnzy)
2019/04/15(月) 12:24:29.79ID:ZCJY7H7yp >>76
中華の良さと日本のそばの良さがミックスした老舗の中華そば屋が“もはや時代遅れだ”と
密かに新業態店舗の開発を進めていたが、味がその域に至らず公表されていなかったのを
店主が死んだのを機に「中華そばに代わる新時代の業態!アジアンダイニング!」って
大々的に“これからはこれで行きます!”ってやったものの
なんだか売りがよくわからないごった煮みたいな店になって「…これ…?」って
困惑されつつ客が離れてる。だいたいそんな感じ。
中華の良さと日本のそばの良さがミックスした老舗の中華そば屋が“もはや時代遅れだ”と
密かに新業態店舗の開発を進めていたが、味がその域に至らず公表されていなかったのを
店主が死んだのを機に「中華そばに代わる新時代の業態!アジアンダイニング!」って
大々的に“これからはこれで行きます!”ってやったものの
なんだか売りがよくわからないごった煮みたいな店になって「…これ…?」って
困惑されつつ客が離れてる。だいたいそんな感じ。
80デフォルトの名無しさん (アウアウウー Sa5d-UFLJ)
2019/04/15(月) 12:31:35.54ID:jiJBq32la Kotlinもよろしく
81デフォルトの名無しさん (ドコグロ MM33-3hn+)
2019/04/15(月) 14:02:46.05ID:ExcgkRe9M Swiftで客離れてるかい?コレジャナイ感はあるとしても
82デフォルトの名無しさん (ワッチョイ b32d-ngQC)
2019/04/15(月) 23:22:42.82ID:/I5Tz9We0 swift書きやすいじゃん、objectiveC書いたことないけど
83デフォルトの名無しさん (アウアウエー Sae3-HMQY)
2019/04/16(火) 00:03:59.51ID:kZx+Z5ira またはぎわら本でますか?
84デフォルトの名無しさん (ワッチョイ 138c-c7kU)
2019/04/16(火) 01:13:37.17ID:dSoiMk3K0 Hacking with Swiftで十分。無料だし。
85デフォルトの名無しさん (ワッチョイ a22d-Ea22)
2019/04/19(金) 08:14:12.35ID:PuGTBcz20 素朴な疑問を教えて欲しいです。
簡単なosxアプリを最新のXCodeを使っています。
Macの設定でスリープオフ、画面のみオフにする設定で動かしていますが、開発中にビルドして実行した後にエラーで止まるわけではないのですが処理が止まってしまいました。
何度かは(数分)画面がオフになっても処理が継続しているのを確認してから寝たのですが数十分後に止まるような事はありますか?
止まってるのはdipatchqueue.main.asyncの中だと思うのですが、何かヒントだけでも分かれば教えて欲しいです。
エラーが出ていないのが気になります。
簡単なosxアプリを最新のXCodeを使っています。
Macの設定でスリープオフ、画面のみオフにする設定で動かしていますが、開発中にビルドして実行した後にエラーで止まるわけではないのですが処理が止まってしまいました。
何度かは(数分)画面がオフになっても処理が継続しているのを確認してから寝たのですが数十分後に止まるような事はありますか?
止まってるのはdipatchqueue.main.asyncの中だと思うのですが、何かヒントだけでも分かれば教えて欲しいです。
エラーが出ていないのが気になります。
86デフォルトの名無しさん (ワッチョイ 6502-Prtq)
2019/04/19(金) 08:43:13.18ID:TxABBsFf0 OS側の問題。
そんなに長くコンパイルするなら、スリープ機能等はオフにする。
そんなに長くコンパイルするなら、スリープ機能等はオフにする。
87デフォルトの名無しさん (ワッチョイ a22d-Ea22)
2019/04/19(金) 08:56:47.58ID:PuGTBcz20 >>86
ありがとうございます、スリープはオフにしてるのですが、もしかして画面がオフになるのもダメなのかしら
ありがとうございます、スリープはオフにしてるのですが、もしかして画面がオフになるのもダメなのかしら
88デフォルトの名無しさん (ワッチョイ 928c-K2JC)
2019/04/19(金) 08:59:11.63ID:UPSvai8f0 それは無関係でしょう。
何回試行したの?
何回試行したの?
89デフォルトの名無しさん (ワッチョイ a22d-Ea22)
2019/04/19(金) 09:05:41.49ID:PuGTBcz20 一回の処理が30秒ほど、これを3000回ほど繰り返しています。
今朝確認したら止まっていたので、朝の用意してる時にもう一度だけ試しましたが、30分後にかくにんしたら(画面はオフ)またも止まっていました
今朝確認したら止まっていたので、朝の用意してる時にもう一度だけ試しましたが、30分後にかくにんしたら(画面はオフ)またも止まっていました
90デフォルトの名無しさん (ワッチョイ a22d-Ea22)
2019/04/19(金) 09:10:34.80ID:PuGTBcz20 要所にはprintでコンソールに進捗が分かるようにコメント出してるのですが、どうもasync内の処理に入ってから止まってるような感じです。
ヒントだけでも良いのですが>< 心が折れそう
ヒントだけでも良いのですが>< 心が折れそう
91デフォルトの名無しさん (ワッチョイ 928c-K2JC)
2019/04/19(金) 09:23:02.08ID:UPSvai8f0 30分程度で確認に入れるなら画面オフにしないで試してみたら?
切り分けて潰していかないと
切り分けて潰していかないと
92デフォルトの名無しさん (ワッチョイ 928c-K2JC)
2019/04/19(金) 09:24:27.59ID:UPSvai8f0 あ。
ビルド中に止まってるって話じゃないのか。
すみません。
ビルド中に止まってるって話じゃないのか。
すみません。
93デフォルトの名無しさん (ワッチョイ 928c-K2JC)
2019/04/19(金) 09:25:43.46ID:UPSvai8f0 メモリーリークは?
9490 (ブーイモ MMd5-Ea22)
2019/04/19(金) 09:42:40.71ID:EB/Z3yYvM95デフォルトの名無しさん (ワッチョイ 928c-K2JC)
2019/04/19(金) 09:58:09.31ID:UPSvai8f0 僕はiOS畑でmacOSでの開発経験は無いけど、クロージャー内での相互強参照には注意してます。
廃棄される事のないオブジェクトのプロパティをクロージャーにキャプチャしてないでしょうか。
廃棄される事のないオブジェクトのプロパティをクロージャーにキャプチャしてないでしょうか。
9690 (ワッチョイ b12c-Ea22)
2019/04/19(金) 10:56:31.11ID:Tu1+OCMX09790 (ワッチョイ b12c-Ea22)
2019/04/19(金) 10:58:45.87ID:Tu1+OCMX0 書いていて気付きましたが
メインスレッドとサブスレッドでクラス外の変数にそれぞれアクセスしています、順番は合っていますが(前後しません)ループ終わりに初期化したりするほうが良いですか?代入から参照を繰り返しています
メインスレッドとサブスレッドでクラス外の変数にそれぞれアクセスしています、順番は合っていますが(前後しません)ループ終わりに初期化したりするほうが良いですか?代入から参照を繰り返しています
98デフォルトの名無しさん (ワッチョイ 928c-K2JC)
2019/04/19(金) 12:09:11.98ID:UPSvai8f0 クロージャーは実行時点での変数などを内部に保持しますので、他のオブジェクトのプロパティやメソッドをクロージャーで実行する際には相互強参照を起こさない様、注意が必要です。
ライフサイクル内で破棄される事のないviewなどは要注意ですね。
変数宣言時というより、クロージャーにキャプチャリストを置いて対処します。
{[weak self] in self?.anyMethod()}
といった書式です。
ライフサイクル内で破棄される事のないviewなどは要注意ですね。
変数宣言時というより、クロージャーにキャプチャリストを置いて対処します。
{[weak self] in self?.anyMethod()}
といった書式です。
99デフォルトの名無しさん (ワッチョイ 3207-4Lt8)
2019/04/21(日) 01:30:21.36ID:iFSUeFmu0 構造体のプロパティに全部初期値を与えると、メンバーワイズイニシャライザが使えなくなるのはなぜなの?
イニシャライザ書くのめんどくさいよ。
くそ仕様なのでは?
イニシャライザ書くのめんどくさいよ。
くそ仕様なのでは?
100デフォルトの名無しさん (ワッチョイ 3207-4Lt8)
2019/04/21(日) 01:32:58.67ID:iFSUeFmu0 >>99 は defaultイニシャライザが定義されてるから、メンバーワイズイニシャライザが消えたってことはわかるけど、なぜこの仕様なのかがわからない。
メンバーワイズイニシャライザを使えなくするのが疑問。
メンバーワイズイニシャライザを使えなくするのが疑問。
101デフォルトの名無しさん (ワッチョイ 8101-+1ox)
2019/04/21(日) 11:36:42.98ID:b6xf/OvP0 xcodeに関する話題はどこか別スレ有りますか?
部品の探し方とかコードとの関連付けとか、ハウツーサイト見ても何の為にやってるのか理解できなくて。
部品の探し方とかコードとの関連付けとか、ハウツーサイト見ても何の為にやってるのか理解できなくて。
102デフォルトの名無しさん (ワッチョイ 52bd-JNgg)
2019/04/21(日) 12:05:11.84ID:pCSfgkO00103デフォルトの名無しさん (ワッチョイ d27c-/6WQ)
2019/04/21(日) 13:08:05.97ID:uR3YTCI+0 Xcode part15
http://egg.5ch.net/test/read.cgi/mac/1552999170/
http://egg.5ch.net/test/read.cgi/mac/1552999170/
104デフォルトの名無しさん (ワッチョイ 8101-+1ox)
2019/04/22(月) 02:31:27.06ID:SWJDNqxR0 新MC板だったか,有り難う。
105デフォルトの名無しさん (ワッチョイ b12c-Ea22)
2019/04/23(火) 14:13:15.43ID:FQZTVnj/0 >>85 の質問をさせてもらったのですが、ご報告です。
Macのスリープ"しない"
ディスプレイのスリープ"しない"
スクリーンセーバ"開始しない"
この状態で実行すると止まらずに動いております。
問題の切り分けを進めたいのですがヒントが有れば教えて欲しいです。
作っているAppでdispatch.queue.mainを使用してラベルやインジケータを更新しているのですが、Macがスリープや画面オフ、またはスクリーンセーバ開始で問題は出るのでしょうか?
Macのスリープ"しない"
ディスプレイのスリープ"しない"
スクリーンセーバ"開始しない"
この状態で実行すると止まらずに動いております。
問題の切り分けを進めたいのですがヒントが有れば教えて欲しいです。
作っているAppでdispatch.queue.mainを使用してラベルやインジケータを更新しているのですが、Macがスリープや画面オフ、またはスクリーンセーバ開始で問題は出るのでしょうか?
106デフォルトの名無しさん (ワッチョイ 928c-w5dY)
2019/04/23(火) 14:29:52.93ID:eM8URmwI0 処理中にメモリー使用量が増えていくとの書き込みも有りましたが、Instrumentsを起動してAllocationsで#Persistentを確かめた感じでしょうか。
107デフォルトの名無しさん (ワッチョイ b12c-Ea22)
2019/04/23(火) 14:37:24.94ID:FQZTVnj/0 >>106
ありがとうございます、確認してみます
ありがとうございます、確認してみます
108デフォルトの名無しさん (ワッチョイ b12c-Ea22)
2019/04/23(火) 14:46:02.85ID:FQZTVnj/0 こ、こんなツール知らなかった!
なんか便利そうな感じです。
見た感じループ1週でチョビチョビ増えてる感じですね、データベースへの書き込み処理と読み込みかな?
問題はない感じっぽいです、このツールすごい
なんか便利そうな感じです。
見た感じループ1週でチョビチョビ増えてる感じですね、データベースへの書き込み処理と読み込みかな?
問題はない感じっぽいです、このツールすごい
109デフォルトの名無しさん (ワッチョイ b12c-Ea22)
2019/04/23(火) 15:07:02.13ID:FQZTVnj/0 連投申し訳ありません。
ループの過程でsleep()を入れてるのですが、なんとなくこれが原因っぽいような気がしてきました
ループの過程でsleep()を入れてるのですが、なんとなくこれが原因っぽいような気がしてきました
110デフォルトの名無しさん (ワッチョイ 928c-w5dY)
2019/04/23(火) 15:12:05.68ID:eM8URmwI0 #Persis tentは廃棄されずに存続しているオブジェクトです。もしここが増え続けている様ですと、強参照が疑われます。
また、iOSではラベルの更新などにはプロパティオブザーバーを使う事がよくあります。
プロパティ毎に、値が更新された時に実行する処理を指定できます。
var score = 0 { didSet { scoreLavel.text = “Score : \(score)”} }
といった感じです。
macOSでも同様かは解りませんが...
ご参考まで、
また、iOSではラベルの更新などにはプロパティオブザーバーを使う事がよくあります。
プロパティ毎に、値が更新された時に実行する処理を指定できます。
var score = 0 { didSet { scoreLavel.text = “Score : \(score)”} }
といった感じです。
macOSでも同様かは解りませんが...
ご参考まで、
111デフォルトの名無しさん (ワッチョイ f666-dCbv)
2019/04/23(火) 19:09:15.92ID:zVNwrrWL0 ディスプレイのスリープやスクリーンセーバでプロセスがサスペンド(?)するのはちょっと考えられないけど(もしかしてもしかしてmacOSのナンかあるかもだけど)、
https://developer.apple.com/library/archive/qa/qa1340/_index.html
Listing 2 Preventing sleep using I/O Kit in Mac OS X 10.6 Snow Leopard
で、プログラムからMacのスリープやディスプレイのスリープを抑制(というかしないように)ができるよ
アクティビティモニタで状態は確認できる。「非スリープ」の項目。出てない場合はリストタイトルを右クリックで
IOPMAssertionCreateWithName で はい
IOPMAssertionRelease で いいえ
「はい」のプロセスがひとつでもあればスリープしない
https://developer.apple.com/library/archive/qa/qa1340/_index.html
Listing 2 Preventing sleep using I/O Kit in Mac OS X 10.6 Snow Leopard
で、プログラムからMacのスリープやディスプレイのスリープを抑制(というかしないように)ができるよ
アクティビティモニタで状態は確認できる。「非スリープ」の項目。出てない場合はリストタイトルを右クリックで
IOPMAssertionCreateWithName で はい
IOPMAssertionRelease で いいえ
「はい」のプロセスがひとつでもあればスリープしない
112デフォルトの名無しさん (ワッチョイ a22d-Ea22)
2019/04/23(火) 21:16:14.40ID:d6R+4rUw0113デフォルトの名無しさん (ワッチョイ b12c-Ea22)
2019/04/24(水) 13:25:01.92ID:mjBvBaH40 IOPMAssertionCreateWithNameを使ってNoIdleSleepを設定することで回避できたようです。
よく考えてみるとシステムがスリープになるとプロセスが止まるのは当たり前のことなのですね、気づく事が出来なくて恥ずかしいですが今後の糧とします。
皆さん本当にありがとうございました。
よく考えてみるとシステムがスリープになるとプロセスが止まるのは当たり前のことなのですね、気づく事が出来なくて恥ずかしいですが今後の糧とします。
皆さん本当にありがとうございました。
114デフォルトの名無しさん (ワッチョイ ff02-14KV)
2019/05/28(火) 01:28:52.91ID:CHSOWKq90 ここでiOSのswift playgrounds の質問して良いですか??
115デフォルトの名無しさん (ワッチョイ 5f2d-0vwM)
2019/05/28(火) 08:51:43.63ID:fThzCcyx0 >>114
それは、Xcodeスレのほうが良いかもね
それは、Xcodeスレのほうが良いかもね
116デフォルトの名無しさん (ワンミングク MMbf-9Ps2)
2019/05/28(火) 09:39:07.03ID:twHuJAd4M117デフォルトの名無しさん (ワッチョイ df8c-kH1c)
2019/05/28(火) 10:38:14.63ID:DVQuNbO80 SPgのアプリの操作や、教育シナリオについての質問だと対応したもんか困るな。
Swiftのゴードに関する質問なら全く問題無い。
Swiftのゴードに関する質問なら全く問題無い。
118デフォルトの名無しさん (ワッチョイ df8c-kH1c)
2019/05/28(火) 10:39:01.20ID:DVQuNbO80 ゴードって何??
コードね。
コードね。
119デフォルトの名無しさん (ワッチョイ a7b3-XCiU)
2019/05/28(火) 12:01:34.71ID:w4zZ1fDo0 ありがとうございます!
プログラミング初心者で、初めてiPadでプログラムに触れて、すごい楽しんでいます。
ただ、今、同じ処理をするのに、エラーが出るコードとエラーが出ないちょっと違うコードの違いがわからなくて、悩んでいます。
分かっている人にはしょうもない質問かもしれないですが、自宅に帰ったら書かせていただきます!
プログラミング初心者で、初めてiPadでプログラムに触れて、すごい楽しんでいます。
ただ、今、同じ処理をするのに、エラーが出るコードとエラーが出ないちょっと違うコードの違いがわからなくて、悩んでいます。
分かっている人にはしょうもない質問かもしれないですが、自宅に帰ったら書かせていただきます!
120デフォルトの名無しさん (ワッチョイ ff02-14KV)
2019/05/28(火) 19:39:17.29ID:CHSOWKq90 すみません教えてください
swift playgrounds コードを学ぼう2 の 「ステージを作るー道をつなぐ」をやっています。
島の中の座標(2.2)にブロックを2個置きたいのですが、下のパターンAはエラーが出るのに、パターンBはエラーが出ません。
やろうとしてることは同じだと思うんですが、なんでパターンBは上手くいくんでしょうか??
//パターンA
//ブロックの再宣言が無効ですのエラーが出る
let block = Block()
world.place(block, atColumn: 2, row: 2)
let block = Block()
world.place(block, atColumn: 2, row: 2)
//パターンB
//問題なく2個のブロックが置かれる
for i in 1 ... 2 {
let block = Block()
world.place(block, atColumn: 2, row: 2)
}
よろしくお願いします。
swift playgrounds コードを学ぼう2 の 「ステージを作るー道をつなぐ」をやっています。
島の中の座標(2.2)にブロックを2個置きたいのですが、下のパターンAはエラーが出るのに、パターンBはエラーが出ません。
やろうとしてることは同じだと思うんですが、なんでパターンBは上手くいくんでしょうか??
//パターンA
//ブロックの再宣言が無効ですのエラーが出る
let block = Block()
world.place(block, atColumn: 2, row: 2)
let block = Block()
world.place(block, atColumn: 2, row: 2)
//パターンB
//問題なく2個のブロックが置かれる
for i in 1 ... 2 {
let block = Block()
world.place(block, atColumn: 2, row: 2)
}
よろしくお願いします。
121デフォルトの名無しさん (ワッチョイ df8c-kH1c)
2019/05/28(火) 19:50:39.55ID:DVQuNbO80 ループ内での定数宣言は各回、改めて行われているので問題無いが、エラーが起きるコードでは同じ定数が複数回宣言されているのでエラーとなる。
なお、ループ定数のiもループ内で使用されていないので、本来はワイルドカードを使用するのが望ましい。
for _ in 1...2 {
....
}
なお、ループ定数のiもループ内で使用されていないので、本来はワイルドカードを使用するのが望ましい。
for _ in 1...2 {
....
}
122デフォルトの名無しさん (ワッチョイ df8c-kH1c)
2019/05/28(火) 19:54:00.30ID:DVQuNbO80 これなら通るでしょう。
let block = Block()
world.place(block, atColumn: 2, row: 2)
world.place(block, atColumn: 2, row: 2)
let block = Block()
world.place(block, atColumn: 2, row: 2)
world.place(block, atColumn: 2, row: 2)
123デフォルトの名無しさん (ワッチョイ ff02-14KV)
2019/05/28(火) 20:17:26.95ID:CHSOWKq90 >>121
ありがとうございます!
ループ内の定数宣言について、はっきりと理解していないのですが、今後勉強します。
ループ定数iの件も今理解できないですが、ちょっと勉強します。
>>122
これも試したのですが、一個目のブロックは置かれるのですが、それが消えてから二個目のブロックが置かれてしまって結局1個しかブロックが置かれませんでした。
それも意味がわかりませんでした。。。
ちなみにこれは上手く行きました。当たり前ですが。。。
let block1 = Block()
world.place(block1, atColumn: 2, row: 2)
let block2 = Block()
world.place(block2, atColumn: 2, row: 2)
ありがとうございます!
ループ内の定数宣言について、はっきりと理解していないのですが、今後勉強します。
ループ定数iの件も今理解できないですが、ちょっと勉強します。
>>122
これも試したのですが、一個目のブロックは置かれるのですが、それが消えてから二個目のブロックが置かれてしまって結局1個しかブロックが置かれませんでした。
それも意味がわかりませんでした。。。
ちなみにこれは上手く行きました。当たり前ですが。。。
let block1 = Block()
world.place(block1, atColumn: 2, row: 2)
let block2 = Block()
world.place(block2, atColumn: 2, row: 2)
124デフォルトの名無しさん (ワッチョイ df8c-kH1c)
2019/05/28(火) 20:21:32.57ID:DVQuNbO80125デフォルトの名無しさん (ワッチョイ ff02-14KV)
2019/05/28(火) 20:35:44.65ID:CHSOWKq90126デフォルトの名無しさん (ワッチョイ df8c-kH1c)
2019/05/28(火) 20:38:11.70ID:DVQuNbO80 ループ内で宣言された定数blokは、一回ループすると破棄されてる。
で、次のループでまた「新たな定数として」宣言されてる。
for _ in 1...2 {
let block = Block() //定数blockが宣言され、Blockが格納された
world.place(block, atColumn: 2, row: 2) //worldがplace()を実行
} //定数blockは破棄→次のループへ
で、次のループでまた「新たな定数として」宣言されてる。
for _ in 1...2 {
let block = Block() //定数blockが宣言され、Blockが格納された
world.place(block, atColumn: 2, row: 2) //worldがplace()を実行
} //定数blockは破棄→次のループへ
127デフォルトの名無しさん (ワッチョイ ff02-14KV)
2019/05/28(火) 21:03:01.13ID:CHSOWKq90 >>126
ありがとうございます!
理解できました!
それってローカルスコープって言うものと関係があるのでしょうか?
ローカルスコープ内で宣言された定数がそのループ内で下まで行って、
それで宣言されたのは消えるけど、ブロックは残る。
でまたループの最初で新たに宣言されて、同じ名前のブロックだけど、1個目のブロックとは違う2個目のブロックが作られるってことですね!
ありがとうございます!
ありがとうございます!
理解できました!
それってローカルスコープって言うものと関係があるのでしょうか?
ローカルスコープ内で宣言された定数がそのループ内で下まで行って、
それで宣言されたのは消えるけど、ブロックは残る。
でまたループの最初で新たに宣言されて、同じ名前のブロックだけど、1個目のブロックとは違う2個目のブロックが作られるってことですね!
ありがとうございます!
128デフォルトの名無しさん (ワッチョイ ff02-14KV)
2019/05/28(火) 21:06:57.09ID:CHSOWKq90 親切にありがとうございます。
プログラム面白いです!
プログラム面白いです!
129デフォルトの名無しさん (ワッチョイ df8c-kH1c)
2019/05/28(火) 21:26:26.57ID:DVQuNbO80130デフォルトの名無しさん (ワッチョイ df8c-kH1c)
2019/05/28(火) 21:29:38.21ID:DVQuNbO80 知識と実験結果が繋がるとワクワクするよね。
131デフォルトの名無しさん (ワッチョイ df8c-kH1c)
2019/05/28(火) 22:06:12.86ID:DVQuNbO80 >>122のコードだと、スコープ内だから定数blockも、そこに格納されてるブロックも「そのまま」残ってる。
で、先ず一回めのplace()でブロックがcolumn 2, row2に置かれる。
そして、その同じブロックがまたplace()で使われて、同じ位置に置き直されてる。
だから一旦消える。
で、先ず一回めのplace()でブロックがcolumn 2, row2に置かれる。
そして、その同じブロックがまたplace()で使われて、同じ位置に置き直されてる。
だから一旦消える。
132デフォルトの名無しさん (ワッチョイ ff02-14KV)
2019/05/29(水) 01:28:22.62ID:n5wrmHwb0133デフォルトの名無しさん (ワッチョイ 2a01-3Kiq)
2019/06/04(火) 04:57:26.99ID:Rl5HHtb60 楽しみですね。来ましたね。
134デフォルトの名無しさん (アウアウエー Sae2-n0I8)
2019/06/05(水) 09:09:04.10ID:iH0AsPg1a SwiftUIってどうなのよ
135デフォルトの名無しさん (ワッチョイ 6a8c-WHxb)
2019/06/05(水) 09:37:29.67ID:bn8XLE5n0 癖になっちゃうみたいよ
136デフォルトの名無しさん (ワッチョイ 6a8c-WHxb)
2019/06/05(水) 11:12:50.80ID:bn8XLE5n0 手持ちのiOS向けコードをmacOS向けにビルドしてみてる。
拍子抜けするほど簡単。
iOSはスレッドの選択に寛容なのだと分かった^_^
iOSで引っ掛からなかったミスをmacOS向けだとキッチリ指摘される。
お陰でiOS向けの動作も改善できた(^^;;
拍子抜けするほど簡単。
iOSはスレッドの選択に寛容なのだと分かった^_^
iOSで引っ掛からなかったミスをmacOS向けだとキッチリ指摘される。
お陰でiOS向けの動作も改善できた(^^;;
137デフォルトの名無しさん (ワッチョイ 6a8c-WHxb)
2019/06/05(水) 21:52:24.16ID:bn8XLE5n013892 (ワッチョイ 5384-nFRp)
2019/06/07(金) 13:11:36.86ID:RiGAEFOd0 わりと簡単な2画面使うアプリのソース無料でかどこかに落ちてないですかね。
一通り言語の勉強は終わったので、マニュアルの課題よりちょっと上の画像扱うアプリのソースとか見てみたい
一通り言語の勉強は終わったので、マニュアルの課題よりちょっと上の画像扱うアプリのソースとか見てみたい
139デフォルトの名無しさん (ワッチョイ 038c-FZF1)
2019/06/07(金) 13:26:18.96ID:jIZKE2jv0 >>138
チュートリアルとしてはこれとか。
https://www.hackingwithswift.com/100/16
サンプルソースコードへのリンクも記事の中に有るよ。
ただし、よくあるstoryboardのセグエを使うやり方じゃ無いけど。
チュートリアルとしてはこれとか。
https://www.hackingwithswift.com/100/16
サンプルソースコードへのリンクも記事の中に有るよ。
ただし、よくあるstoryboardのセグエを使うやり方じゃ無いけど。
141デフォルトの名無しさん (ワッチョイ 038c-FZF1)
2019/06/08(土) 13:59:27.79ID:wruTQcwg0 SwiftUIはDateFormatterのロケールに未対応だね
142デフォルトの名無しさん (ワッチョイ 5a00-LWbF)
2019/06/18(火) 02:19:23.63ID:tbAp2v6F0 すみません、教えてください。
今とあるWebサイトに載っている
プログラムの意味を一つずつ調べていまして、
let okHandler: () -> Void = { handler in
if let textField = alertController.textFields?.first {
completionHandler(textField.text)
} else {
completionHandler("")
}
}
の構文がどうなっているのか、全然分かりません。
{ handler in ・・・ からは、
引数も戻り値も無いクロージャーと思っていますが、
正しいでしょうか?
あと、
let okHandler: () -> Void = { handler in
って、
let okHandler = { handler in
ではだめでしょうか?
今とあるWebサイトに載っている
プログラムの意味を一つずつ調べていまして、
let okHandler: () -> Void = { handler in
if let textField = alertController.textFields?.first {
completionHandler(textField.text)
} else {
completionHandler("")
}
}
の構文がどうなっているのか、全然分かりません。
{ handler in ・・・ からは、
引数も戻り値も無いクロージャーと思っていますが、
正しいでしょうか?
あと、
let okHandler: () -> Void = { handler in
って、
let okHandler = { handler in
ではだめでしょうか?
143デフォルトの名無しさん (ワッチョイ 8b01-p7Vn)
2019/06/18(火) 07:44:59.45ID:RRPGT4du0 >>142
分解して理解する
let 変数名: 型 = 値
【型】
クロージャ型の場合さらに分解して
(引数型宣言) -> 戻り値型
「引数無し」は「空のタプルを1つ」と同等として扱われる
また、Void型は空のタプル型のエイリアス
Void = ()
以下は全て同じ型「() -> ()」になる
let okHandler: () -> Void = {}
let a: (Void) -> Void = okHandler
let b: () -> () = okHandler
let c: (()) -> (()) = okHandler
let d: ((())) -> ((())) = okHandler
【値】
クロージャの場合
{引数定義 in 本体}
今回の方の場合、handlerは空のタプル型の引数となる
クロージャ型を省略するとhandlerの型が不明になりコンパイル出来ない
handlerの型を明示するか「引数定義 in」を省略すれば可能
let okHandler = { (handler:Void) in }
let okHandler = { }
分解して理解する
let 変数名: 型 = 値
【型】
クロージャ型の場合さらに分解して
(引数型宣言) -> 戻り値型
「引数無し」は「空のタプルを1つ」と同等として扱われる
また、Void型は空のタプル型のエイリアス
Void = ()
以下は全て同じ型「() -> ()」になる
let okHandler: () -> Void = {}
let a: (Void) -> Void = okHandler
let b: () -> () = okHandler
let c: (()) -> (()) = okHandler
let d: ((())) -> ((())) = okHandler
【値】
クロージャの場合
{引数定義 in 本体}
今回の方の場合、handlerは空のタプル型の引数となる
クロージャ型を省略するとhandlerの型が不明になりコンパイル出来ない
handlerの型を明示するか「引数定義 in」を省略すれば可能
let okHandler = { (handler:Void) in }
let okHandler = { }
144デフォルトの名無しさん (ワッチョイ 9a8c-6ILD)
2019/06/18(火) 09:19:46.79ID:MqxFux0r0 引数をとらないクロージャー() -> Voidとしているのに{ handler in ....}というは通らないのでは。
クロージャー内でもhandlerは使われていないし。
クロージャー内でもhandlerは使われていないし。
145デフォルトの名無しさん (ワッチョイ 8b01-GEyX)
2019/06/18(火) 10:13:56.93ID:RRPGT4du0 すまん、Swift4からは引数型宣言とタプル型の区別が厳密化した影響で通らなくなってるな
https://github.com/apple/swift-evolution/blob/master/proposals/0110-distingish-single-tuple-arg.md
>>143を訂正
>「引数無し」は「空のタプルを1つ」と同等として扱われる
これはSwift3までで、Swift4以降は間違い
空のタプルを1つなら以下になる
let okHandler: (()) -> Void = { handler in }
let a: (Void) -> Void = okHandler
let b: (()) -> () = okHandler
let c: (()) -> (()) = okHandler
let d: ((())) -> ((())) = okHandler
let okHandler2 = { (handler:()) in }
引数無しなら引数は書けない
let okHandler3 = { }
さらにSwift4→Swift5でも型の文字列化が変更されているようで
print(type(of: { (handler:()) in } ))
が
Swift4では () -> ()
Swift5では (()) -> ()
と表示される
https://github.com/apple/swift-evolution/blob/master/proposals/0110-distingish-single-tuple-arg.md
>>143を訂正
>「引数無し」は「空のタプルを1つ」と同等として扱われる
これはSwift3までで、Swift4以降は間違い
空のタプルを1つなら以下になる
let okHandler: (()) -> Void = { handler in }
let a: (Void) -> Void = okHandler
let b: (()) -> () = okHandler
let c: (()) -> (()) = okHandler
let d: ((())) -> ((())) = okHandler
let okHandler2 = { (handler:()) in }
引数無しなら引数は書けない
let okHandler3 = { }
さらにSwift4→Swift5でも型の文字列化が変更されているようで
print(type(of: { (handler:()) in } ))
が
Swift4では () -> ()
Swift5では (()) -> ()
と表示される
146デフォルトの名無しさん (ワッチョイ 9a8c-6ILD)
2019/06/18(火) 10:37:29.39ID:MqxFux0r0 >{ handler in ・・・ からは、
>引数も戻り値も無いクロージャーと思っていますが、
>正しいでしょうか?
正しい。但し、クロージャー内の’handler in’は現在は通らない。
>let okHandler: () -> Void = { handler in
>って、
>let okHandler = { handler in
>ではだめでしょうか?
そもそも、
let okHandler: () -> Void = { handler in
では現在は通らない。
let okHandler: () -> Void = { () in
let okHandler: () -> Void = {
let okHandler = {
let okHandler = { () in
これらは通る。
という事ですね。
>引数も戻り値も無いクロージャーと思っていますが、
>正しいでしょうか?
正しい。但し、クロージャー内の’handler in’は現在は通らない。
>let okHandler: () -> Void = { handler in
>って、
>let okHandler = { handler in
>ではだめでしょうか?
そもそも、
let okHandler: () -> Void = { handler in
では現在は通らない。
let okHandler: () -> Void = { () in
let okHandler: () -> Void = {
let okHandler = {
let okHandler = { () in
これらは通る。
という事ですね。
147デフォルトの名無しさん (JP 0H7f-LWbF)
2019/06/18(火) 18:47:59.54ID:/CgxXLZnH >>142 です。
>>143、>>144
ありがとうございます!ほんと凄いです。
お伝えしていませんでしたが、swift3でした。
失礼しました。
油断したらまた何だったっけ?ってなりそうですが、
「タプル」「空のタプル」で検索したりして、
かなり分かりました。
let okHandler = {
でいいような・・・。
ところで、分かってきて、また疑問が湧いてきました。
// 引数と戻り値のないクロージャ
let closure = { () -> Void in print("クロージャテスト") }
closure()
let closure: () -> Void = { print("クロージャテスト") }
closure()
って、同じ意味だと思いますが、
なぜ、
let closure: () -> Void = { print("クロージャテスト") }
の形(今回質問させていただきましたクロージャー型={}の形)
なのか分かりますでしょうか?
好みの問題でしょうか?
let closure: () -> Void;
closure = { print("クロージャテスト") }
closure()
なら、なんとなく分かりますが。
>>143、>>144
ありがとうございます!ほんと凄いです。
お伝えしていませんでしたが、swift3でした。
失礼しました。
油断したらまた何だったっけ?ってなりそうですが、
「タプル」「空のタプル」で検索したりして、
かなり分かりました。
let okHandler = {
でいいような・・・。
ところで、分かってきて、また疑問が湧いてきました。
// 引数と戻り値のないクロージャ
let closure = { () -> Void in print("クロージャテスト") }
closure()
let closure: () -> Void = { print("クロージャテスト") }
closure()
って、同じ意味だと思いますが、
なぜ、
let closure: () -> Void = { print("クロージャテスト") }
の形(今回質問させていただきましたクロージャー型={}の形)
なのか分かりますでしょうか?
好みの問題でしょうか?
let closure: () -> Void;
closure = { print("クロージャテスト") }
closure()
なら、なんとなく分かりますが。
148デフォルトの名無しさん (ワッチョイ 9a8c-6ILD)
2019/06/18(火) 19:12:11.36ID:MqxFux0r0 変数、定数の宣言は、型が推定できるか、または明示されていることが絶対条件ですので、値を指定しない限り型を明示する必要があります。
ですので、基本的には
let 定数名: 型
var 変数名: 型
となる訳です。
この場合、値は後で代入する事になります。
定数名 = 値
変数名 = 値
この二段階を一度に行う事が可能で、
let 定数名: 型 = 値
var 変数名: 型 = 値
という書式になります。
この時、していされた「値」によって、定数(変数)の型を推定する事ができるので、型宣言を省略可能になります。
let 定数名 = 値
var 変数名: = 値
どの書き方をするかは基本的に自由です。
読み易さやメンテナンスのし易さ、その他の事情に応じて自分で判断します。
ですので、基本的には
let 定数名: 型
var 変数名: 型
となる訳です。
この場合、値は後で代入する事になります。
定数名 = 値
変数名 = 値
この二段階を一度に行う事が可能で、
let 定数名: 型 = 値
var 変数名: 型 = 値
という書式になります。
この時、していされた「値」によって、定数(変数)の型を推定する事ができるので、型宣言を省略可能になります。
let 定数名 = 値
var 変数名: = 値
どの書き方をするかは基本的に自由です。
読み易さやメンテナンスのし易さ、その他の事情に応じて自分で判断します。
149デフォルトの名無しさん (ワッチョイ 9a8c-6ILD)
2019/06/18(火) 19:14:33.84ID:MqxFux0r0 修正
誤)var 変数名: = 値
正)var 変数名 = 値
誤)var 変数名: = 値
正)var 変数名 = 値
150デフォルトの名無しさん (ワッチョイ 9a8c-6ILD)
2019/06/18(火) 19:22:36.30ID:MqxFux0r0 ざっくり書きますが、
クロージャー型宣言部分での引数、戻り値の記述、クロージャー(値)部分でのそれも、基本的には両方とも「書く」のです。
が、どちらかで書かれていれば他方は推定可能なので省略でき、更に両方で書かれていない場合は「引数も戻り値も無いのだな」と推定可能なので書式として通る
そんな感じです。
クロージャー型宣言部分での引数、戻り値の記述、クロージャー(値)部分でのそれも、基本的には両方とも「書く」のです。
が、どちらかで書かれていれば他方は推定可能なので省略でき、更に両方で書かれていない場合は「引数も戻り値も無いのだな」と推定可能なので書式として通る
そんな感じです。
151デフォルトの名無しさん (ワッチョイ 9a8c-6ILD)
2019/06/18(火) 19:32:52.12ID:MqxFux0r0 ちなみに
let 定数名: 型 = 値
var 変数名: 型 = 値
この書き方には、型を「確実に」指定出来るというメリットが有ります。
値が「1.0」である時、この値を割り当てられた変数の型は
float でしょうか、それともdouble でしょうか。
どの型であるかでプログラムに不都合が起きる場合、推定に任せるわけにはいきません。
この様な場合には上記の型を明示する書式が採用されます。
let 定数名: 型 = 値
var 変数名: 型 = 値
この書き方には、型を「確実に」指定出来るというメリットが有ります。
値が「1.0」である時、この値を割り当てられた変数の型は
float でしょうか、それともdouble でしょうか。
どの型であるかでプログラムに不都合が起きる場合、推定に任せるわけにはいきません。
この様な場合には上記の型を明示する書式が採用されます。
152デフォルトの名無しさん (ワッチョイ 8b01-GEyX)
2019/06/18(火) 20:04:30.62ID:RRPGT4du0 >>147
戻り値まで指定しているその2例だと好みの問題かな
戻り値を指定しない場合は
最後のステートメント次第で型が変わる可能性がある
func print2(_ s:String) -> Int {
print(s)
return 10
}
let closure1:() -> Void = { print2("クロージャテスト") }
let closure2 = { print2("クロージャテスト") }
closure1は () -> Void
closure2は () -> Int
---
個人的にはトレーリングクロージャで使えるクロージャ側で指定する方が好み
func arr2<T>(_ f:()->T) -> [T] { return [f(),f()] }
let a = arr2 { () -> UInt8 in 10*2 }
print(type(of: a ), a) // Array<UInt8> [20, 20]
戻り値まで指定しているその2例だと好みの問題かな
戻り値を指定しない場合は
最後のステートメント次第で型が変わる可能性がある
func print2(_ s:String) -> Int {
print(s)
return 10
}
let closure1:() -> Void = { print2("クロージャテスト") }
let closure2 = { print2("クロージャテスト") }
closure1は () -> Void
closure2は () -> Int
---
個人的にはトレーリングクロージャで使えるクロージャ側で指定する方が好み
func arr2<T>(_ f:()->T) -> [T] { return [f(),f()] }
let a = arr2 { () -> UInt8 in 10*2 }
print(type(of: a ), a) // Array<UInt8> [20, 20]
153デフォルトの名無しさん (ワッチョイ 5a00-LWbF)
2019/06/19(水) 01:46:47.34ID:J6hmOODE0154デフォルトの名無しさん (ドコグロ MMf7-8cV5)
2019/06/19(水) 18:16:34.43ID:2JA7n6eeM Swift Playgroundsどぅょ
155デフォルトの名無しさん (JP 0H8d-F2Fz)
2019/06/20(木) 10:32:09.63ID:39UUBS39H Swiftを始めてみたいんだけどMacが必要らしくてMac miniかMacbookを買おうと思ってる(高い)
こどおじだからMac miniでいいかな?
実際に開発してる者の意見を聞きたい(開発上の利便性とか速度とか)
こどおじだからMac miniでいいかな?
実際に開発してる者の意見を聞きたい(開発上の利便性とか速度とか)
156デフォルトの名無しさん (ワッチョイ 938c-1T9w)
2019/06/20(木) 10:49:25.55ID:po6GQ3Kk0 プロジェクトの規模による。
始めてみる程度ならMacBook Airでも問題無い。
サブディスプレイの有無で作業効率がかなり違うので、出来れば用意したほうが良いと思う。
実機テストにも使えるし、サブディスプレイにもなるのでiPadはお勧め。
iPadは、サブディスプレイ接続しなくても資料の表示にはかなり役立つ。
MacとiPadは相互にコピペ出来るし、その他の連携も良い。
始めてみる程度ならMacBook Airでも問題無い。
サブディスプレイの有無で作業効率がかなり違うので、出来れば用意したほうが良いと思う。
実機テストにも使えるし、サブディスプレイにもなるのでiPadはお勧め。
iPadは、サブディスプレイ接続しなくても資料の表示にはかなり役立つ。
MacとiPadは相互にコピペ出来るし、その他の連携も良い。
■ このスレッドは過去ログ倉庫に格納されています
