Swift part9at TECH
Swift part9 - 暇つぶし2ch477:デフォルトの名無しさん (ワッチョイ df3c-FtWv)
17/01/09 04:04:22.01 JTALZxOQ0.net
>>465
別スレで質問してた人?
バッファサイズ考えるより前にそのファイルの入手方法を考えなおしたほうがいい気がするが

478:デフォルトの名無しさん (ワッチョイ 5f93-+flj)
17/01/09 11:54:09.06 eHS8l2Ef0.net
>>467
>別スレで質問してた人?
違うよ
単に俺(>>467)が>>434に難癖つけてるだけだよ
Cで書いた方が簡単な事もあるの例に
文字列I/Oって言う危険物を持ってきた上で
安全チェックもしてないコードを引用して、ほらCで書いた方が簡潔でしょ?
と言う論調がおかしいと思ったんで噛み付いてる
確かにCで書いた方がいい事もいっぱいある
だけど少なくともI/Oとか文字列処理とかC言語の中でも1番の危険物を持ってきて
危険だと言うことを知らせずにCで書いた方が簡単な例に上げるのはどうかと思うよ
こう言う危険性もあるけど、swiftからcの関数を呼び出せばこう言う書き方も出来るよ程度にしておいて欲しい

479:デフォルトの名無しさん (ワッチョイ 5f93-+flj)
17/01/09 11:55:28.60 eHS8l2Ef0.net
>>468
すまんあんかミス
>単に俺(>>467)が>>434に難癖つけてるだけだよ
おれは>>465ですた

480:デフォルトの名無しさん (ワッチョイ 7bcf-q3aP)
17/01/09 12:49:46.11 4OeNzyzM0.net
>>468
入力が固定されてるなら問題ないと思う

481:デフォルトの名無しさん (ワッチョイ 5f93-+flj)
17/01/09 13:58:21.90 eHS8l2Ef0.net
>>470
ファイル入力で常にこちらの思い通りのデータしか来ないことを想定するの?
入門書のチュートリアルならそれでもいいけどさ
入力データをこちらで決める事ができるなら
JsonとかXMLとかRealmとかのこなれたライブラリが存在するファイル形式を採用する方がいいと思うよ
そんなことを考えるとswiftの中でcを直接使うことの優位性はあまり無いと思うんだ

482:デフォルトの名無しさん (アウアウカー Sa3f-7kys)
17/01/09 14:53:15.83 C7tBzNeYa.net
オートレイアウト使ってるやつなんているのかな?まじでゴミだと思うんやが

483:デフォルトの名無しさん (アウアウウー Sa3f-yz8t)
17/01/09 15:21:45.24 abgacrATa.net
まぁ、ほぼC言語使えるんだけどね
書き方の慣れの問題だけで
let lineSize = 1024
if let file = fopen(filePath, "r") {
 let data = UnsafeMutablePointer<Int8>.allocate(capacity: lineSize)
 defer {
 data.deallocate(capacity: lineSize)
 }
 while((fgets(data, Int32(lineSize), file)) != nil) {
  if let str = String(utf8String: data) {
   print(str)
  }
 }
}
>>472
バリバリ使ってるよ

484:デフォルトの名無しさん (スッップ Sdff-GcKO)
17/01/09 15:25:37.56 ynBqv2kkd.net
>>472
中上級の奴が使いたがるんだよね。
で、viewDidLoadで、IBOUTLETのframeいじって「変わらない!Xcodeのバグだっ」て騒ぐんだよね。
お前が世の中のバグだから。

ライフサイクル解らないグズだから。

485:デフォルトの名無しさん (ササクッテロリ Sp3f-/ZRc)
17/01/09 15:32:05.60 rN+gQaLTp.net
>>473

なんか長文くんまで現れてやってたけど結局これよな
しかし UnsafeMutablePointer を let 宣言できるのが相変わらずキモい
特別扱いできないものかねぇ

486:デフォルトの名無しさん (ワッチョイ df3c-FtWv)
17/01/09 17:35:13.39 JTALZxOQ0.net
>>468
そっか別人か
そのメガ単位で改行されてないテキストファイルって一般的なの?
平均3バイト/文字としても3MBで100万文字だよ?
fgetsやfscanfと同じ機能を持つAPIは今のところSwiftにはなくて
同じようなことをしようとするとどうしても結構な量のコードを書く必要があるから
CのAPIを使いたい場合の例として>>434を上げた
UnsafePointerを扱うってことは
メモリ周りで問題を引き起こすコードを書く危険性が高まるってことだからそこを天秤にかける必要性はわかる
ただそれ以外の安全チェックとか危険性とか言ってる部分はSwiftなら全部面倒みてくれるわけではないよね

487:デフォルトの名無しさん (ワッチョイ df3c-FtWv)
17/01/09 17:49:07.80 JTALZxOQ0.net
>>465
別人だってことなので一応この質問に答えとくと
プログラムで扱うファイルの1行の最大長が予測可能な範囲にあるならそれに応じてサイズ変更すればいいって意味ね
そうじゃないなら>>463に書いたようにバッファ内に改行があるかどうかをチェックして複数回バッファ読んでから処理する
この辺はC使っても使わなくても同じ
100MBを超えるようなテキストファイルってログファイルくらい処理しかないから発想が貧弱なのかもしれないけどね

488:デフォルトの名無しさん (ササクッテロロ Sp3f-yz8t)
17/01/09 17:51:25.34 LuXubKyCp.net
データ受け渡しのためのテキストファイルに改行コードいれるかどうかは設計者の決めることだからなぁ

489:デフォルトの名無しさん (スッップ Sdff-GcKO)
17/01/09 17:58:25.64 ynBqv2kkd.net
>>477
ログ以外だと、何かのデータファイルをCSVで書き出したケースも考えられる。
過去やったのだと、クイズを出すアプリで、問題をひたすらテキストファイルで持っていた。
でも、移動体端末で、でかいファイルを処理するのって、基本的なarchitectureを考え直した方が良い気がする。

490:デフォルトの名無しさん (ワッチョイ df3c-FtWv)
17/01/09 18:09:09.39 JTALZxOQ0.net
>基本的なarchitectureを考え直した方が良い気がする。
100%同意
iOSならテキストデータのインポート・エクスポート時が一番のユースケースだろうね

491:デフォルトの名無しさん (ササクッテロロ Sp3f-yz8t)
17/01/09 18:49:37.59 LuXubKyCp.net
htmlもxmlもJSONも改行コードは必須じゃないからなぁ

492:デフォルトの名無しさん (ワッチョイ 5b3c-GcKO)
17/01/09 19:35:52.53 Mfdzy40n0.net
>>480
まあ、
>>477
さんの言う通りログなら仕方ないんだけれどもね。
ただ、そんなデカイログを端末で見るというarchitectureが・・・以下自粛。

493:デフォルトの名無しさん (ササクッテロロ Sp3f-+flj)
17/01/09 19:38:32.72 uxZFBykMp.net
Autolayoutが使えないのは論理的思考の出来ない馬鹿
あんなもん設定した通りの優先順位付けで表示されるだけだろ

494:デフォルトの名無しさん (ワッチョイ 0f7b-MPfw)
17/01/09 23:59:11.54 qvjxruLM0.net
ログなんて、圧縮するだろ
JSのファイルでも、Minify とかで圧縮する

495:デフォルトの名無しさん (アウアウウー Sa3f-yz8t)
17/01/10 00:08:49.29 qN25f4rba.net
それがどーした?

496:デフォルトの名無しさん (ササクッテロラ Sp3f-/ZRc)
17/01/10 09:52:08.69 0L0fi+PIp.net
CとSwiftでraw文字列の読み込みの実装難易度が違う
って話だったのに、データ構造だのAuto Layoutだのを議論しててワロタ

497:デフォルトの名無しさん (アウアウウー Sa3f-yz8t)
17/01/10 10:27:31.44 hQEZjrPha.net
初心者かな
話が飛ぶのは2chではよくあることだから

498:デフォルトの名無しさん (スプッッ Sdff-oQtP)
17/01/10 10:40:39.28 L0gptR0Sd.net
で?

499:デフォルトの名無しさん (ササクッテロロ Sp3f-yz8t)
17/01/10 10:53:58.04 FDJAHjJcp.net
ん?

500:デフォルトの名無しさん (ササクッテロラ Sp3f-/ZRc)
17/01/10 10:56:22.37 0L0fi+PIp.net
>>487
お前バイク板住民かよぉ
(今もあそこがアレな板なのかは知らん)

501:デフォルトの名無しさん (ササクッテロロ Sp3f-yz8t)
17/01/10 11:17:06.45 FDJAHjJcp.net
最初は文字列の読み込みうんぬんというより、インラインでC言語を記述したいって話じゃなかったっけ?
で、そのあと、具体例として、ファイル読み込みの話になって、C言語で書いても可変サイズの行だと面倒じゃね? という話になって、そっからデータ構造の話に発展して、どさくさ紛れに、Auto Layoutの話を入れてくるKYが現れて、ってのがここまで流れだと思ったが...
まぁ、別に同じスレッドで違う話題を同時に扱うなって決まりはないしな

502:デフォルトの名無しさん (ワッチョイ df2b-vyGv)
17/01/10 11:44:11.95 nWa+BtAl0.net
プログラム技術@2ch掲示板
> ネタ、板とは関係の無い話題はご遠慮ください。
決まりはあるんだけどな
Inline C in Swiftはネタ(当人はマジの様子)だけど、それ以降はSwiftに絡めたネタも少なく・・・
データ構造やAutoLayoutを話すのはいいが、ネタとしてSwiftを絡める努力をしよう(他人事

503:デフォルトの名無しさん (アウアウウー Sa3f-yz8t)
17/01/10 11:56:12.46 1oVGbtNGa.net
プログラム技術板で、データ構造やAPI絡みの話を交えるなっつうのは頑固すぎるわ
AutoLayoutに至っては4レスあっただけなのに
Swiftと全く無関係ってわけでもないやろ

504:デフォルトの名無しさん (スププ Sdff-+flj)
17/01/10 12:28:56.18 VHs9RTlPd.net
Swiftでファイルダンプするだけならこれで良くね?
while let l = readLine() {
print( l )
}
ただしファイルを標準入力にリダイレクトしておく
FileHandleにreadLineが定義されていないのが謎

505:デフォルトの名無しさん (ササクッテロラ Sp3f-/ZRc)
17/01/10 12:35:10.25 0L0fi+PIp.net
イマドキのAPI設計的にはFileHandlerと切り離したReaderがあるんじゃね
SwiftのCoreAPIにReaderがないのは3rd party libにぶん投げしてる気がする

506:デフォルトの名無しさん (ワッチョイ dfc9-f1yY)
17/01/10 14:03:45.11 8RubTyxI0.net
Foundationが貧弱なのが悪い

507:デフォルトの名無しさん (ワッチョイ 7bcf-q3aP)
17/01/10 14:08:24.18 s989ZmsY0.net
>>481
昔の2ちゃんのhtml思い出した

508:デフォルトの名無しさん (ワッチョイ 5b3c-HvS5)
17/01/10 15:07:36.80 tt6nQotl0.net
型推論ネタ, 以下Aは動くがBはmapに呪いが掛かってしぬ
// A
let s = sequence(first:0){$0+1}
.lazy
.map{$0*2}
s.prefix(10)
.reversed()
.forEach{print($0)}
// B
sequence(first:0){$0+1}
.lazy
.map{$0*2}
.prefix(10)
.reversed()
.forEach{print($0)}

509:デフォルトの名無しさん (ワッチョイ df3c-FtWv)
17/01/10 17:22:06.72 PjuH0Yrh0.net
Bでも型指定すればいいのかもしれんがどうやって指定すればいいのか分からない
こういうの普通に動くようになって欲しいね
他言語だと問題なく動くケースのような気がする
(->> (iterate inc 1)
(map #(* 2 %))
(take 5)
(reverse)
(map printl


510:n))



511:デフォルトの名無しさん (ササクッテロラ Sp3f-/ZRc)
17/01/10 17:34:25.49 0L0fi+PIp.net
関数型()にかぶれた可読性のないコードだと思った(コナミカン
関数型言語なら文化に合ってるんだろうけどSwiftで書くコードじゃねぇ
もっと読みやすい書き方あるだろとコンパイラ以前に、人間様がコードレビュー時に発狂したい

512:デフォルトの名無しさん (スッップ Sdff-+flj)
17/01/10 17:46:11.19 IYumFm2zd.net
>>494
よし、これならcを使った方が簡単に書ける例として文句無かろう
import Foundation
guard let fh = FileHandle(forReadingAtPath: "xxx"),
dup2(fh.fileDescriptor, 0) != -1 else {
fatalError("file/dup error")
}
while let line = readLine() {
print(line)
}

513:デフォルトの名無しさん (アウアウウー Sa3f-yz8t)
17/01/10 17:51:57.47 aMk4PEuoa.net
先にprefixすればいいんやで
sequence(first:0){$0+1}
.prefix(20)
.map{$0*2}
.reversed()
.forEach{print($0)}

514:デフォルトの名無しさん (ワッチョイ 5b3c-HvS5)
17/01/10 18:00:07.10 tt6nQotl0.net
>>502
処理順を入れ替えられる例を出してすまん
map→filter→prefixのような場合は対応出来ない

515:デフォルトの名無しさん (ワッチョイ dfc9-f1yY)
17/01/10 18:59:28.94 8RubTyxI0.net
これが読みにくいとかさすがに化石すぎだろ

516:デフォルトの名無しさん (ササクッテロロ Sp3f-yz8t)
17/01/10 20:03:26.36 FDJAHjJcp.net
結局 reversed()が癌なんやな
makeIterator()かませばいけるけどな
sequence(first:0){$0+1}
.lazy
.map{$0*2}
.prefix(10)
.makeIterator()
.reversed()
.forEach{print($0)}

517:デフォルトの名無しさん (ワッチョイ df3c-FtWv)
17/01/10 20:46:07.85 PjuH0Yrh0.net
>>501
これいいね
エンコーディングの融通はきかないけど
Extensionにして気軽に使える

518:デフォルトの名無しさん (ワッチョイ df3c-FtWv)
17/01/10 21:15:41.77 PjuH0Yrh0.net
どうでもいいけど改行コード云々はファイルフォーマットの話でデータ構造とは関係ないと思う

519:デフォルトの名無しさん (ワッチョイ 5f93-+flj)
17/01/10 22:31:43.58 Vzu2YddV0.net
>>507
ファイルフォーマットはデータ構造だとおもうが?

520:デフォルトの名無しさん (ワッチョイ df3c-FtWv)
17/01/11 00:03:32.25 wniphiOc0.net
広義ではそうなのかもだけど
一般的にはデータ構造って言うともう少し論理的なもの(例えばArrayとかDictionaryとか)で
そのデータがシリアライズされたファイルフォーマット(ファイルの構造)とは別の話じゃない?
「じゃ、ここのデータ構造はJSONでお願い」って言われたら違和感あるよね

521:デフォルトの名無しさん (ササクッテロラ Sp3f-/ZRc)
17/01/11 00:16:18.42 5OhI584zp.net
変数名に$が付くとPerlを思い出す化石マン
Rustみたく変数名に名前付けたい
>>ワッチョイ df3c-FtWv
もういいから、自分が否定されないように前提条件、論点をズラし続けるから
風が吹いたら桶屋が儲かるみたいなスレチになるんだよ
またSwiftに関係ない議論を吹っ掛けてんだろ

522:デフォルトの名無しさん (ワッチョイ df3c-FtWv)
17/01/11 00:32:18.40 wniphiOc0.net
>>510
議論するつもりはないから
いい大人ならオブラートに包んでるって気づけよな

523:デフォルトの名無しさん (ササクッテロロ Sp3f-yz8t)
17/01/11 00:45:33.03 6QBqeohxp.net
SierのSE的には
データ設計で決めるのがデータ構造
ファイル設計で決めるのがファイルフォーマットだろ
プログラムはよくわからんから実装方法は各プログラマに任せるみたいな

524:デフォルトの名無しさん (ワッチョイ 1b17-+flj)
17/01/11 04:58:51.90 jTTy0tPr0.net
ラトナーApple辞めるってよ

525:デフォルトの名無しさん (ワッチョイ 5fe5-+flj)
17/01/11 07:20:50.12 V2u2R+4Y0.net
Lattnerまじかよ

526:デフォルトの名無しさん (スップ Sdff-oQtP)
17/01/11 08:02:31.25 jHuXm8fPd.net
swift終了のお知らせ

527:デフォルトの名無しさん (オイコラミネオ MMff-2HrH)
17/01/11 09:04:44.13 7pf6bg3nM.net
そしてオラクルが手に入れる

528:デフォルトの名無しさん (エムゾネ FFff-9Pqs)
17/01/11 09:09:16.22 0/vimycYF.net
>>513
Swiftがこの有り様だからな
つーかもともと言語としてのセンスがやはりなかった
Objective-Cから変える技術


529:的逼迫性もなかった まあオープンソースだし日曜プログラマは引き続きモダンな言語を楽しめばいいと思う



530:デフォルトの名無しさん (アウアウウー Sa3f-yz8t)
17/01/11 09:10:55.73 TTvERX8La.net
はい、解散、解散
お前ら元気でな

531:デフォルトの名無しさん (ワッチョイ 5b3c-HvS5)
17/01/11 09:13:22.53 853Dbb3u0.net
メーリングリストには残る予定とのこと
URLリンク(lists.swift.org)

532:デフォルトの名無しさん (ササクッテロラ Sp3f-/ZRc)
17/01/11 09:36:15.32 5OhI584zp.net
ネタかとお前らマジだった
3でABI安定させてiOS組み込みランタイムにできてりゃまだこうはならなかったろうに

533:デフォルトの名無しさん (ササクッテロロ Sp3f-OZpM)
17/01/11 10:22:04.51 6QBqeohxp.net
Appleがテスラ買収したら面白いのに

534:デフォルトの名無しさん (ワッチョイ 5f32-l80d)
17/01/11 12:28:02.16 3A3Blea/0.net
自動運転がホットな分野ってことが分かる出来事だな……
CarPlayとテスラの自動運転がガッツリ融合みたいな感じになったりするのかね

535:デフォルトの名無しさん (ワッチョイ dfc9-f1yY)
17/01/11 12:39:27.51 RGh2RgBv0.net
ラトナーがテスラでSwift製のTensorFlow級機械学習ライブラリのプロジェクト立ち上げるフラグ?

536:デフォルトの名無しさん (ワッチョイ 2b91-P21V)
17/01/11 12:46:25.80 hbAKDMBg0.net
それでSwift Package Managerから使える3rd party libraryが増えるなら歓迎したいな
コアライブラリ(Foundation)が貧弱でも、外部ライブラリが充実してるならreadlineみたいな問題も起きぬ
go, rust, nodejsなんかは外部ライブラリもパッケージマネージャーも枯れてるのに
Swiftは未だにパッケージマネージャーが実用品質まで実装されていないのはホントくそだぜ

537:デフォルトの名無しさん (ササクッテロロ Sp3f-+flj)
17/01/11 13:25:01.52 El817HeFp.net
今後もバリバリコード書くのか?テスラの自動運転ソフトの副社長ってもう管理職じゃないの
いずれにしてもSwiftにはさじを投げた?

538:デフォルトの名無しさん (オイコラミネオ MMff-+flj)
17/01/11 17:08:20.22 h4pP9InkM.net
ああ、LattnerがいないSwiftの進化なんて…
オープンコミュニティといえ、元締めは彼だろ

539:デフォルトの名無しさん (アウアウウー Sa3f-yz8t)
17/01/11 17:33:41.40 NWO+SBAfa.net
かつてのボーランドからマイクロソフトへチーフアーキテクトが引き抜かれて、衰退していったDelphiと同じ運命を辿るのか

540:デフォルトの名無しさん (ササクッテロラ Sp3f-/ZRc)
17/01/11 17:53:48.76 5OhI584zp.net
次はAppleが
企業がリーディングする必要がないほどに成長した
Swiftはコミュニティベースの開発に移行する
とか言って切り離すフェーズだなw
その時は流石にIBMは泣いていいと思う

541:デフォルトの名無しさん (ワッチョイ 6f13-q3aP)
17/01/11 19:07:19.36 AM+tjFEn0.net
gasgas
歌舞伎座.tech#13「Elixir 勉強会」
2017/01/11(水) 開場:18:57 開演:19:00  ニコニコ生放送
lv286846512

542:デフォルトの名無しさん (ワッチョイ 6f5b-9Pqs)
17/01/11 19:48:30.44 ql+say3+0.net
>>528
オープンソース化はこの伏線だったのかな
というかすでにコミュニティベースの開発に移行してるんじゃなかったっけ?

543:デフォルトの名無しさん (スッップ Sdff-+flj)
17/01/11 20:20:46.67 vol/OZGBd.net
これはSwiftが進化するフラグなのか
Swiftが廃れるフラグなのか

遅延評価だな

544:デフォルトの名無しさん (アウアウウー Sa3f-yz8t)
17/01/11 20:53:57.18 jVlnEIwOa.net
うまいこと言ったつもりなの?

545:デフォルトの名無しさん (ワッチョイ 5fc9-tEgc)
17/01/11 22:21:38.06 H1aLMscd0.net
Swiftがオープンソース化した本当の理由は退職への布石だったか。
業務中に開発した物は権利も含めて置いてけって言われるからな。

546:デフォルトの名無しさん (ワッチョイ ab8f-S2pU)
17/01/11 22:2


547:2:31.15 ID:6a0oW3vG0.net



548:デフォルトの名無しさん (スッップ Sdd2-GRi3)
17/01/12 02:42:00.89 aguNSWiGd.net
Swift愛が強いやついるよな
何がそんなにいいのかわからんけど

549:デフォルトの名無しさん (ワッチョイ bbba-f8hU)
17/01/12 04:11:52.57 NO1D7SqU0.net
仕様が固まったらswift勉強しようと思ってたのに
勉強する前に終わりが来てしまった…
もう駄目なん?

550:デフォルトの名無しさん (ワッチョイ be5b-GRi3)
17/01/12 04:53:25.74 HEZQC1GR0.net
結局AppleがSwiftゴリ推してたからSwiftやるかってなってただけで、別に言語自体に魅力があるかっつうと微妙な言語だからなぁ

551:デフォルトの名無しさん (ワッチョイ d315-+/No)
17/01/12 10:11:11.64 hrKw0WqE0.net
ゴリ推し君、久しぶりだな
お前の天下だぞ、やったなw
>>534
それはもう実現されたろ
誰もありがたがらないから取り上げられないだけで

552:デフォルトの名無しさん (ワッチョイ 9232-ZP+f)
17/01/12 11:03:11.47 HIZRXgmf0.net
>>534
JavaにAOT入ってくるし余りSwiftの優位性がないんじゃないかなぁ
GoogleとしてはGolangの方を推すだろうし

553:デフォルトの名無しさん (スップ Sdf2-vkEW)
17/01/12 12:16:49.20 fxxdnJ+zd.net
>>539
優位性はoracleに訴訟起こされないことなので
googleだからとgolang推すとは限らない

554:デフォルトの名無しさん (スプッッ Sdf2-MRNU)
17/01/12 12:20:15.98 ZbEfheT4d.net
正直、普通にpythonの方が良かったな

555:デフォルトの名無しさん (ササクッテロレ Sp37-rG+u)
17/01/12 13:18:05.94 bePo0qAjp.net
>>539
AOTはとっくに入ってるけど、それでも頭打ちになって、
AOT+JITハイブリッドに進んでいる

556:デフォルトの名無しさん (JP 0Hf2-dHfL)
17/01/12 15:07:06.54 UlDpgnikH.net
どうなると思う?

557:デフォルトの名無しさん (ワッチョイ f38f-JEwG)
17/01/12 19:27:11.74 MO5zZFfW0.net
>>539
golangはエコシステムが素敵なだけで
better c感があるからなぁ。
正直ジェネリクスが入るまではあんまりアンドロイド向けにはならない気も。だってjavaみたいな抽象化ブログラミング苦手っしょ

558:デフォルトの名無しさん (ワッチョイ d315-+/No)
17/01/12 19:51:13.69 hrKw0WqE0.net
Javaみたいな抽象化プログラミング(OOP至上主義プログラミング)がクソって風潮で
GoやRust(あと一応Swiftも)の言語仕様が切られてるんだけどな
ジェネリクスはどうでもいいわ、あれば使うけど、なくても死ぬわけでもなし

559:デフォルトの名無しさん (スップ Sdf2-vkEW)
17/01/12 20:03:43.81 fxxdnJ+zd.net
OPP最高

560:デフォルトの名無しさん (ワッチョイ f38f-JEwG)
17/01/12 20:04:28.76 MO5zZFfW0.net
>>545
抽象化プログラミングの否定ではなく
関数型プログラミングへの注力ってだけでしょ。抽象化は必要な技術であることには変わらない。
RxSwiftとか触ってると抽象化が得意な言語上で作られたFrameworkの便利さには感動する。
んで、golangはそういうのが苦手で、
どうしてるかと言うと、コードジェネレータを作ったりしてるw
正直そういう部分がアンバランスな感じなので、はよジェネリクスくれってなってる。

561:デフォルトの名無しさん (ササクッテロラ Sp37-gjPF)
17/01/12 20:21:07.84 EuCQnJSXp.net
zero cost abstractionを心がけたからじゃね?
C++テンプレート含めて動作性能求めてコードジェネレータは当然の結果
JavaやSwiftはそのコストなんて気にしてないけども

562:デフォルトの名無しさん (JP 0Hf2-dHfL)
17/01/13 10:56:53.83 A7lO7PxRH.net
Swift無くなるの?

563:デフォルトの名無しさん (スッップ Sdd2-GRi3)
17/01/13 10:59:55.55 knpjVG01d.net
Appleの中にSwiftに本気の人がいなくなったってだけでしょ

564:デフォルトの名無しさん (スプッッ Sdd2-vkEW)
17/01/13 11:01:08.52 zzZzBy0Od.net
腐ったリンゴから解放されて世界に羽ばたくよ

565:デフォルトの名無しさん (オイコラミネオ MMce-kkJw)
17/01/13 16:06:30.15 qq8NhLIPM.net
詳解Swift第3版読み終わったらけど、delegateの説明が一切なかった。
delegateとprotocolの違いって何?

566:デフォルトの名無しさん (ワッチョイ 573c-dHfL)
17/01/13 17:55:00.38 le1wMpNu0.net
大まかに言えばコールバック用のprotocolを実装したインスタンスをdelegateと呼んでるだけ
技法や用語の類なので言語仕様と直接の関係は無いよ

567:デフォルトの名無しさん (ワッチョイ 92e5-kkJw)
17/01/13 18:32:25.12 cenlIzEl0.net
>>553
ありがとう😊

568:デフォルトの名無しさん (ワッチョイ d35b-lDPz)
17/01/13 19:41:22.91 6sCHka4P0.net
>>552
delegateの話は無しなのかぁ。
まあ、UIKit、AppKitの話だからなぁ。

569:デフォルトの名無しさん (ワッチョイ be5b-GRi3)
17/01/14 02:00:38.21 zbDc0ypE0.net
AppleがSwiftを切っても使い続けたいと思うならまともな言語といえるのだろう

570:デフォルトの名無しさん (ブーイモ MM8b-0NVw)
17/01/17 12:02:14.54 cEkG7JbvM.net
テスラのファームウェアがSwift製になるのか
ますます日本人のトヨタ離れが加速するな

571:デフォルトの名無しさん (JP 0Hf2-dHfL)
17/01/17 15:24:26.60 BOj3HsKUH.net
で、Swift無くなるの?

572:デフォルトの名無しさん (ササクッテロラ Sp37-gjPF)
17/01/17 16:31:46.31 eAAsiKtXp.net
swiftってファームウェアが書けるほど低レイヤーで動けるのかいな
LinuxないしmacOS, iOS上のソフトウェアに留まりそう
まぁそれでもテスラ上の開発がswiftになるならこれほど胸熱なニュースはswift史上にないな(そうなるとは思ってない

573:デフォルトの名無しさん (ワッチョイ 0353-0NVw)
17/01/17 17:18:09.57 KCosYzOz0.net
いや、CとSwiftの併用でいくと思う
というかビットバイトレベルの操作はCが一等書きやすいのは今後も変わらん
Swift登場後はポストCはどの言語かという議論はナンセンスだと思うわ

574:デフォルトの名無しさん (ワッチョイ 0353-0NVw)
17/01/17 17:47:17.45 KCosYzOz0.net
実のところSwiftに熱くなれるのはiOSシェア50%強の日本だけ
日本にいると気づきにくいが他の国ではそもそもSwiftを走らせる機会に乏しいのだ
サーバーサイドでもGo、node.jsやJavaを差し置いてSwiftを採用するメリットは現状乏しい
ラトナーは日本人のオタクばっかりが飛びついてバカッターであることないこと吹き回ってる現状を前に
未来への展望が見えなくなってしまったのかもしれない
もしかしたらSwiftが流行るかどうかは日本人次第と言えるかもしれない
Swiftはラトナーから日本人への置き土産だったのだ

575:デフォルトの名無しさん (ワッチョイ 0353-0NVw)
17/01/17 17:53:53.67 KCosYzOz0.net
バカッターで本質的でも建設的でもないことで熱くなっている日本人を前にして
ラトナー「やべえ一番面倒なお客さんに好かれちまった・・・この言語もうだめだわ」
となったに違いない。俺ラトナーの気持ちよくわかるわ

576:デフォルトの名無しさん (ワッチョイ d3c9-pk1x)
17/01/17 18:00:12.82 1PLMnPDO0.net
>>561
飽きるのも速いからな

577:デフォルトの名無しさん (ワッチョイ f34e-TjL7)
17/01/17 18:01:11.31 1+zZwnvK0.net
>>562
一瞬、「置き土産」をポジティブに捉えてるのかと思ったよ

578:デフォルトの名無しさん (ワッチョイ 0353-0NVw)
17/01/17 18:22:17.10 KCosYzOz0.net
>>564
いやまあ適当におもしろおかしく書いただけなんで俺の意思は上のレスのどこにもないよ

579:デフォルトの名無しさん (スッップ Sdd2-0Plu)
17/01/17 18:57:54.94 N7dBiTg5d.net
>>560
ビット、バイトの操作はアセンブリ言語の方が楽。

580:デフォルトの名無しさん (ワッチョイ 0353-0NVw)
17/01/17 19:02:14.58 KCosYzOz0.net
>>566
楽が何を指してるのかわからんがアセンブリでARMからx86まで対応したコード書く気ですか

581:デフォルトの名無しさん (ブーイモ MM8b-0NVw)
17/01/17 19:16:55.24 cEkG7JbvM.net
IBMは動揺しただろうか
軽く社運賭けてそうだったもんな

582:デフォルトの名無しさん (ワッチョイ 72c9-lDPz)
17/01/17 19:45:51.46 94EBDj3G0.net
そもそも発表後はラトナーそんなにコード書いてない
メーリスでも発言が頻繁だったわけでもない
Swiftはとうにラトナーの手を離れて歩きだしてる

583:デフォルトの名無しさん (ワッチョイ f38f-JEwG)
17/01/17 20:39:45.87 L9ZJiwd40.net
rustの真似してARCやめようとしてるのもテスラで動かすための布石だったりして

584:デフォルトの名無しさん (ワッチョイ 12cf-kkJw)
17/01/17 21:00:56.60 cY3pxmYi0.net
ていうか、単にcocoa系APIは専用の呼び出しサポートして終わり、で良かった気がするんだけどねぇ。
それなら、よそのAPI取り込み選択肢があったのにねぇ。

585:デフォルトの名無しさん (スプッッ Sdf2-k0Ff)
17/01/17 21:29:33.05 diZtCuN9d.net
流れぶったぎってすまないが、演算子で???とか!!ってあったっけ?サーチエンジンで検索できないんだよね

586:デフォルトの名無しさん (ワッチョイ 72c9-lDPz)
17/01/17 22:46:01.20 94EBDj3G0.net
無いっしょ

587:デフォルトの名無しさん (スプッッ Sdf2-k0Ff)
17/01/18 11:32:43.43 QZC6aztod.net
どっかで見た気がしてた、ありがとう

588:デフォルトの名無しさん (ワッチョイ 573c-dHfL)
17/01/18 14:04:31.66 mYaS/Vd70.net
演算子では無いけど書けるかどうかなら一応可能
実用コードで見掛けることは無いだろうけど
let a = Optional(Optional(Optional(0)))
let aa = a???.hashValue
let b = Optional(Optional(0))
let bb = b!!

589:デフォルトの名無しさん (ササクッテロリ Sp37-gjPF)
17/01/18 18:04:04.22 I9cdn/V3p.net
rustの真似事は無理じゃないかなぁ
rustスレに遊びに来た荒し、数時間で挫折したぞ
borrow checkerはARCより死ぬほど扱いが難しい
その割りにARCと実動作に大差ないからメリットが少ないって冷静に判断されそう

590:デフォルトの名無しさん (ワッチョイ d35b-lDPz)
17/01/18 21:45:54.00 LJhKuLVS0.net
>>572
Swift Standard Library -> Swift Standard Library Operators

591:デフォルトの名無しさん (ワッチョイ f642-dHfL)
17/01/18 21:46:51.93 fhQVy3CG0.net
>>576
それは言語として威張れるところか?w

592:デフォルトの名無しさん (ワッチョイ f34e-TjL7)
17/01/18 21:53:24.02 B+OX1k7v0.net
borrowチラっと見たけどややこしいな
ownershipで考えるからややこしいんだろ
reference countのARCのがシンプル

593:デフォルトの名無しさん (ササクッテロリ Sp37-gjPF)
17/01/18 22:18:00.91 I9cdn/V3p.net
>>578
一応、「nilsafeだから安全(笑)」とswiftを馬鹿に出来るくらい不正ポインタアクセスに対して安全だから、、、
その代償のコーディング難易度がくっそ高いから日曜プログラマがちょっと遊びでには向かない
まぁ、業務にもその難易度のせいで上流行程へ採用提案しづらいんだけど
要は、日曜プログラマに愛されて、アポー信者の上流行程を騙しやすいswift最強ってこった

594:デフォルトの名無しさん (ワッチョイ 72c9-lDPz)
17/01/18 22:56:42.20 g+H+g1Pr0.net
RustでもOption使うだろ

595:デフォルトの名無しさん (ワッチョイ c33c-3qL8)
17/01/19 07:59:17.73 FKxmZ7fp0.net
Swiftのメモリ管理 ≒ C++のshared_ptr/weak_ptr
Rustのメモリ管理 ≒ C++のauto_ptr(暗黙move, unique_ptrの先代)
Rustのborrowingはauto_ptr::getとほぼ同じ
ただし解放されたものを参照しないようlifetimeの手厚いサポートがある
ARCの方がコーディングは楽だろうけど
Rust方式は渡したものを保持して遅延使用するのか
関数から戻った時点で使い終わってるのかを
言語レベルで扱えたりするから一長一短ではある
まぁSwiftにもクロージャに関しては@escapingがあるけど

596:デフォルトの名無しさん (ワッチョイ ffc9-mu6I)
17/01/19 20:32:11.50 VasCiZ4n0.net
Swift/ObjCのARCはshared_ptr/weak_ptrと同じ
ただ、SwiftはKotlinのoptional, Rustのif letを言語仕様でパクってあってコーディングが楽
この部分だけObjCにバックポートしたら便利なんじゃね?とふと思った
__nullable, __nonnullとか微妙なキーワードによるバックポートは正直使いづらい

597:デフォルトの名無しさん (アウアウオー Sadf-WaXM)
17/01/19 22:19:36.62 w+bE5wHza.net
そうですね

598:デフォルトの名無しさん (オイコラミネオ MMff-Taza)
17/01/20 15:40:14.18 ZOjl9uXaM.net
型推論をプログラミング知識が乏しい人に説明するなら、どんな隠喩がいいと思う?

599:デフォルトの名無しさん (アウアウオー Sadf-WaXM)
17/01/20 16:00:12.37 is3Fha3pa.net
アヒルみたいな顔してお尻フリフリ歩いてグワッ、グワッて鳴く鳥がいたら、もうそれアヒルってことでいいよね
って感じでいいんじゃね

600:デフォルトの名無しさん (JP 0H87-Taza)
17/01/20 16:35:51.58 6bMM3T6GH.net
うわっ!これガチョウだ!!

601:デフォルトの名無しさん (アウアウオー Sadf-WaXM)
17/01/20 17:08:41.66 is3Fha3pa.net
などと、コンパイルエラーが出たら明示的に宣言してね
ということで

602:デフォルトの名無しさん (スップ Sd1f-ddg/)
17/01/20 18:43:31.96 2Wi9HN+wd.net
>>585
男か女か解らない人がいるんだけれど、喉仏が出ているから、男って事で。

みたいな?

603:デフォルトの名無しさん (ササクッテロリ Sp87-/mpU)
17/01/20 19:05:32.26 4nNA4c16p.net
「おまじない」が古くから由緒ある陰語
実際問題、プログラミング知識が乏しいと
型推論と型宣言と動的型を区別できないから説明省いて良いと思う

604:デフォルトの名無しさん (ワッチョイ 738f-ILNu)
17/01/20 22:51:19.05 /kNqqxub0.net
いやいやそれくらいコンパイラ側が自動で型を推測してよってツッコミを入れていたところが解決した

605:デフォルトの名無しさん (アウアウオー Sadf-WaXM)
17/01/20 23:13:59.78 sVl+H8Xfa.net
それは良かった

606:デフォルトの名無しさん (アウアウオー Sadf-WaXM)
17/01/20 23:59:07.88 sVl+H8Xfa.net
a = b = c = 0
って感じで同じ型の変数に値を一気に代入できないのは不便だよね

607:デフォルトの名無しさん (ササクッテロリ Sp87-/mpU)
17/01/21 01:50:38.98 d82h9KNNp.net
そうですね

608:デフォルトの名無しさん (ワッチョイ 6f5b-JNK/)
17/01/21 01:51:05.02 W/zpHkC+0.net
だってSwiftだもの

609:デフォルトの名無しさん (ササクッテロロ Sp87-UhX6)
17/01/21 02:08:12.56 wL4zqwoRp.net
みつを来てんね

610:デフォルトの名無しさん (オッペケ Sr87-+PXi)
17/01/21 19:37:18.34 aueqPNmbr.net
>>582
つまりc++が最強?

611:デフォルトの名無しさん (ワッチョイ bf8c-GzBV)
17/01/23 21:45:03.95 RV5yVqC70.net
初見なんだけどココ、NewB的な質問もOkなトコロ?

612:デフォルトの名無しさん (ワッチョイ bf8c-GzBV)
17/01/23 21:59:18.58 RV5yVqC70.net
>>598だけど返事待つのもあれだし、質問するわ。ちょっと説明しづらいんだけど
例えばビューのカスタムクラス作って、そこのポップアップボタンとかのアイテムにセレクターつけるとするじゃん。
そんでそのクラスのインスタンスをペアレントのビューに複数おいてどれかのアイテムクリックすると、
別のインスタンスのセレクタが呼ばれちゃわね?二つ目のインスタンスのボタン押したのに、一つ目に反映されたりする。
このカスタムクラス複数インスタンス化においてのNotificationとか、selectorとかで困ってんの、どうやって回避する?

613:デフォルトの名無しさん (アウアウオー Sadf-WaXM)
17/01/23 22:05:37.88 WrhQGC6sa.net
ちょっと言ってる意味がわからないけど
俺のエスパー能力が正確なら、Outlet Collectionでググるといいかもしれない

614:デフォルトの名無しさん (アウアウオー Sadf-WaXM)
17/01/23 22:06:59.56 WrhQGC6sa.net
いやなんか違うような気がするな
やっぱエスパーさんの登場を待とう

615:デフォルトの名無しさん (ワッチョイ f35b-jh1Y)
17/01/23 22:11:15.46 Llx+8S3H0.net
>>599
俺も何いってるのか?
さっぱりだわぁ

616:デフォルトの名無しさん (ワッチョイ bf8c-GzBV)
17/01/23 22:26:13.92 RV5yVqC70.net
すげーリプはえーやばい。
ググってくるわーthx

617:デフォルトの名無しさん (ワッチョイ 33a1-U6eW)
17/01/23 22:26:58.66 sPzCf4bI0.net
Notificationの、selecterとnameちゃんと使い分けてる?

618:デフォルトの名無しさん (ワッチョイ c33c-3qL8)
17/01/23 22:29:39.75 Ws+iSkNs0.net
>>599
UIViewControllerでなくUIViewを継承

619:デフォルトの名無しさん (ワッチョイ bf8c-GzBV)
17/01/23 22:35:00.65 RV5yVqC70.net
>>604
NSMenuItemからいくと、postじゃなくてaction限定になってるんじゃないかな?限定的でスマソンだけど
>>605
OSXでNSViewを継承

620:デフォルトの名無しさん (ワッチョイ bf8c-GzBV)
17/01/23 22:44:47.72 RV5yVqC70.net
>>604
あとNameもインスタンスだと同じになって別のインスタンスが呼ばれちゃう。
でもこれは登録する時にNameにインデックスとか何らかIDつけると回避できそうな気がするけど、メニューアイテムだと
menu?.addItem(NSMenuItem.init(title: name , action: #selector(selected(_:)), keyEquivalent: ""))
みたいな感じで付け入る隙がないんだ

621:デフォルトの名無しさん (ワッチョイ 6f5b-JNK/)
17/01/23 22:54:40.36 wkYluZkM0.net
Swiftの字面の汚さは慣れないなやっぱり

622:デフォルトの名無しさん (ワッチョイ c33c-ddg/)
17/01/23 23:00:43.39 d7Gq4/N70.net
>>599
「ポップアップボタンとか」の「とか」は、「ポップアップボタン」以外の何?
そもそもAppleは、ポップアップボタンなんてものは提供していないがな。
それにiOSでは、クリックなんかはできない。
HumanInterfaceGuidelinesを読み直して出直した方が良いな。

623:デフォルトの名無しさん (ワッチョイ 9339-u5as)
17/01/24 00:55:51.35 exkLo0yv0.net
文字とかって Character と CChar とあるみたいだけど、
こういうことしたい時はどうすればいいんでしょう
Cで
for(i = 'a'; i <= 'z'; i++){
putchar(i & 0x5f);
}
putchar('\n')
みたいなのを swiftで書く場合って…
for i in ???...??? {
もうわからん
}

624:デフォルトの名無しさん (アウアウオー Sadf-WaXM)
17/01/24 01:24:22.63 6XEtipUUa.net
なんでそんなことしたいのか知らんけど
くんな感じ?
for ch in "a".utf8.first!..<"z".utf8.first! {
print(Character(UnicodeScalar(ch & 0x5f)))
}
もっとスマートな書き方があるかも知らん

625:デフォルトの名無しさん (ワッチョイ bf8c-GzBV)
17/01/24 01:33:52.81 7WmLdbGx0.net
>>610
let str = "abcdefghijklmnopqrstuvwxyz"
for c in str.characters{
print(c)
}
がんばれ

626:デフォルトの名無しさん (アウアウオー Sadf-WaXM)
17/01/24 01:43:19.82 6XEtipUUa.net
>>612
それ文字列の中を順に表示してるだけじゃん

627:デフォルトの名無しさん (ワッチョイ bf8c-GzBV)
17/01/24 01:56:29.31 7WmLdbGx0.net
>>612
これ何で大文字になんの?

628:デフォルトの名無しさん (ワッチョイ bf8c-GzBV)
17/01/24 01:57:25.69 7WmLdbGx0.net
>>614
>>611の間違い

629:デフォルトの名無しさん (アウアウオー Sadf-WaXM)
17/01/24 02:07:07.07 6XEtipUUa.net
それはAsciiコードがそうなってるから...

630:デフォルトの名無しさん (アウアウオー Sadf-WaXM)
17/01/24 02:10:03.40 6XEtipUUa.net
大文字にするだけならこっちの方がいいか
for val in UnicodeScalar("a").value...UnicodeScalar("z").value
{
print(String(format: "%c", val).uppercased())
}

631:デフォルトの名無しさん (スッップ Sd1f-JNK/)
17/01/24 02:22:36.10 kY6N+f51d.net
>>611
クッソ読みにくいな
さすがSwift()だわ

632:デフォルトの名無しさん (ワッチョイ c33c-ddg/)
17/01/24 05:59:43.55 odFyaWZN0.net
>>616
何だ?Asciiコードって。
SUICAカード
電球の球
頭痛が痛い
地震が揺れた

633:デフォルトの名無しさん (ワッチョイ 9339-u5as)
17/01/24 07:47:42.37 exkLo0yv0.net
ありがとう
>>611
ワイの求めていたものに近い
見てたら意味的には
>>617のがよさげ
別に小文字を大文字にしたいわけじゃなくて
文字コードを数値で扱いたく
かつ数値を文字にしたかった
例えば大量のテストデータを自動生成するとか
発想が Cなので、そういうやり方しか思いつかないんだけど
手段にたどりつけないで試行錯誤してます

634:デフォルトの名無しさん (ワッチョイ 9339-u5as)
17/01/24 07:50:49.58 exkLo0yv0.net
>>612
それは思いついたけどスマートじゃないと思った
例えばその "a-z" の文字列を生成したい時にどうするかというのが気になった
Cなら例えば
atoz = malloc('z' - 'a' + 2);
p = atoz;
for(c = 'a'; c <= 'z'; c++) {
*p++ = c;
}
*p = 0
ってできるじゃん
それを "abc...z" って26文字ぐらいならベタで書けるけど
これを "aa"~"zz"までとか量が増えて行ったら
ベタでは書けないなぁとか。
てかなんで for ch in 'a'...'z' って書けないんだよ
それぐらいやらせてくれよ

635:デフォルトの名無しさん (ササクッテロリ Sp87-/mpU)
17/01/24 10:19:40.46 PbjuVM+3p.net
aからzが子文字のみの昇順で並ぶ保証がないから
万が一、将来AaBbC...yZzって並ぶ文字コードが世界標準になったら
'a'...'z'が書ける言語仕様にしてたらどうすればいいか分かんないじゃん
これは極端な例だけど、要はそういう不意の事象に耐える意識高い言語仕様にswiftはなってる

636:デフォルトの名無しさん (アウアウオー Sadf-WaXM)
17/01/24 10:32:22.93 8WMehL2Va.net
いやもう文字コード決まってんじゃんw
今更文字コード変えられたら、どっちみちコンパイルし直しになるし
どんだけ既存のプログラムに影響出るんだよw

637:デフォルトの名無しさん (ワッチョイ ff4c-Taza)
17/01/24 10:52:16.06 bcJOEpSP0.net
ASCII知らないのか

638:デフォルトの名無しさん (ワッチョイ c33c-3qL8)
17/01/24 11:01:02.71 HBr+KooL0.net
>>620
>文字コードを数値で扱いたく かつ数値を文字にしたかった
一応部品化すれば本処理部分は多少は見やすく・・・
func irange(_ a:UnicodeScalar, _ b:UnicodeScalar) -> CountableClosedRange<UInt32> {
  return a.value...b.value
}
func nchr(_ a:UInt32) -> UnicodeScalar {
  return UnicodeScalar(a) ?? "?"
}
for i in irange("a", "z") {
  print(nchr(i & 0x5F))
}

639:デフォルトの名無しさん (ササクッテロリ Sp87-/mpU)
17/01/24 11:16:48.70 PbjuVM+3p.net
ソースファイルの文字コードとランタイム内の文字コードは別に考えろよ
ソースファイルの話ならjavac -encodingみたいに対応すればいい
ランタイム内はそれが変動出来るようにString.utf8やUnicodeScalarがある
ソースファイルの文字コードに影響されるってC言語かよw

640:デフォルトの名無しさん (ワッチョイ 335b-wAZW)
17/01/24 12:08:53.72 gy8Md2CU0.net
文字列は魔境

641:デフォルトの名無しさん (アウアウオー Sadf-WaXM)
17/01/24 12:14:47.00 8WMehL2Va.net
ソースファイルにしろランタイムにしろいきなり文字コード体系が変わってもらっちゃ
どんな言語だって困るだろ
文字コードの大小に依存してるコードなんてごまんとあるぞ

642:デフォルトの名無しさん (ワッチョイ c33c-M+yL)
17/01/24 17:34:40.36 +WwPKdrl0.net
日本語が不自由だとか勘弁してくれよ。
URLリンク(kotobank.jp)

643:デフォルトの名無しさん (ワッチョイ 9339-u5as)
17/01/24 19:57:41.91 exkLo0yv0.net
>>625
イイね
ただ大文字化したいというよりは
こういった基本的な処理を身に着けたい
今まで Cや Perlでやってたことが
swiftでもできたらなぁって感じ
できないと俺の寿命がストレスでマッハ

644:デフォルトの名無しさん (スッップ Sd1f-JNK/)
17/01/24 21:29:28.75 6Rgy6vgTd.net
最近の言語だとPythonは読みやすくて覚えやすくていい文法してると思う

645:デフォルトの名無しさん (アウアウウー Sa67-WaXM)
17/01/24 21:47:34.41 KTC1YGyNa.net
Pythonが最近の言語なわけないだろ

646:デフォルトの名無しさん (ワッチョイ a3d4-hfv1)
17/01/24 22:31:37.74 GRF78Bhf0.net
Pythonは3で死んだ

647:デフォルトの名無しさん (ワッチョイ cf42-3qL8)
17/01/24 22:35:46.17 L2GKKZjf0.net
死んだの?

648:デフォルトの名無しさん (ワッチョイ a3d4-hfv1)
17/01/24 22:50:13.02 GRF78Bhf0.net
俺が死んだ

649:デフォルトの名無しさん (ワッチョイ ffc9-NwiU)
17/01/24 23:30:23.92 Khh2743H0.net
UnicodeScalarを拡張してしまえばいいのでは
extension UnicodeScalar : Strideable {
  public func advanced(by n: Int) -> UnicodeScalar {
    return UnicodeScalar(self.value.advanced(by: n))!
  }
  public func distance(to other: UnicodeScalar) -> Int {
    return other.value.distance(to: self.value)
  }
}
extension UnicodeScalar : BitwiseOperations {
  public static var allZeros: UnicodeScalar = UnicodeScalar(UInt32.allZeros)!
  public static func &(lhs: UnicodeScalar, rhs: UnicodeScalar) -> UnicodeScalar {
    return UnicodeScalar(lhs.value & rhs.value)!
  }
  public static func ^(lhs: UnicodeScalar, rhs: UnicodeScalar) -> UnicodeScalar {
    return UnicodeScalar(lhs.value ^ rhs.value)!
  }
  public static func |(lhs: UnicodeScalar, rhs: UnicodeScalar) -> UnicodeScalar {
    return UnicodeScalar(lhs.value | rhs.value)!
  }
  public static prefix func ~(rhs: UnicodeScalar) -> UnicodeScalar {
    return UnicodeScalar(~rhs.value)!
  }
}
for c in UnicodeScalar("a")...UnicodeScalar("z") {
  print(c & UnicodeScalar(0x5f)!)
}

650:デフォルトの名無しさん (アウアウウー Sa67-WaXM)
17/01/25 08:50:03.50 WD3nSRWWa.net
うっわめんどくせ
もうC言語でいいわ

651:デフォルトの名無しさん (エムゾネ FF1f-JNK/)
17/01/25 09:06:42.63 Xv7wslg5F.net
>>637
基本読みにくいんだよなSwift

652:デフォルトの名無しさん (ワッチョイ c33c-3qL8)
17/01/25 10:23:43.05 2+5m68360.net
>>636
結局リテラルがアレなんだよな
型指定しないとStringになるから俺はStrideable断念して引数使ったけど
シングルクォートのリテラルを言語仕様に入れなかった理由がよく分からない

653:デフォルトの名無しさん (ササクッテロリ Sp87-/mpU)
17/01/25 10:39:46.63 +ZiK5CtYp.net
シングルクォート = UnicodeScalar で言語仕様切るとUnicodeに引っ張られるからでは
古い言語にならってASCIIを想像する人もいれば、今時ならUTF8だと想像する人もいるだろうし、フレームワークに合わせてUnicodeと言う人もいる
落とし所のない不毛な議論が目に見えるから、検討したけど削除した仕様な気がする

654:デフォルトの名無しさん (ワッチョイ c33c-3qL8)
17/01/25 11:04:36.57 2+5m68360.net
でもStringとUnicodeScalarの間にCharacterが入ってるあたりは
既にUnicodeに盛大に引っ張られてる気もする
let c = Character("あ" + "゚")
まぁ何らかの検討はあったんだろうけど・・・

655:デフォルトの名無しさん (ワッチョイ 734c-JNK/)
17/01/25 20:41:52.96 RfIl6u1t0.net
Swiftって確かに字数は少ないかもしれないが読みやすいかっていうと…

656:デフォルトの名無しさん (アウアウウー Sa67-WaXM)
17/01/25 20:56:49.37 xQi6cekNa.net
じゃあ読みやすい言語ってどれだよ

657:デフォルトの名無しさん (スプッッ Sd1f-CBoF)
17/01/25 21:09:38.61 d9MKwq+md.net
cobol

658:デフォルトの名無しさん (ワッチョイ 1342-3qL8)
17/01/25 22:58:32.84 CYUx5EoW0.net
Java
Java
Java
Java
Java

659:デフォルトの名無しさん (ワッチョイ 1342-3qL8)
17/01/25 23:07:52.05 CYUx5EoW0.net
とおもったけどC#

660:デフォルトの名無しさん (ワッチョイ 1342-3qL8)
17/01/25 23:12:20.50 CYUx5EoW0.net
>>642
Swift字数おおくないか
ライブラリの名前がいちいち長ったらしいし
関数に引数の名前2つがデフォとかげんなりするし
try!に至ってはもう

661:デフォルトの名無しさん (ワッチョイ 0f4c-2P18)
17/01/26 01:40:32.20 9A8WN5h/0.net
>>647
そ、そうね…
落ち着いて考えるとCで簡潔に書けることも長ったらしいし、それでいて読みにくい
Swiftって一体どこがいいんだろう…

662:デフォルトの名無しさん (ワッチョイ 2b10-Ve17)
17/01/26 02:37:16.34 dAEo4WV40.net
引数名がない言語の方が見た目はシンプルだけど、特にtrue/falseだけのパラメータとかだと何してるかわかんないときがあって今となってはイラッとするな。
obj.doSomething(true, false, true)みたいなやつ
標準APIだとそういうのは良くないってわかってるのかあんまりないけど、誰かが適当に作ったライブラリだとそんなのがよく出てくる気がする

663:デフォルトの名無しさん (スッップ Sdca-2P18)
17/01/26 03:07:53.57 26kSGCXVd.net
Swiftのラベル機能、アンダーバーってなんだよ
クソ過ぎやしないか?
Objective-Cのままでいいわまじで

664:デフォルトの名無しさん (ワッチョイ 833c-AZYz)
17/01/26 07:35:18.87 8RDF259k0.net
トレーリングクロージャは良い点
それとクロージャ構文にプレフィックスが不要なところも
代わりにスコープブロックにdoが必要だけど2文字は許容範囲内

665:デフォルトの名無しさん (ワッチョイ 7e0d-Spol)
17/01/26 08:13:25.19 O9H7zUJg0.net
>>641
Stringのメンバを見るとCharacterとUnicodeScalarは同列っぽいよ
どちらもUnicodeを内


666:部エンコードに扱ってるからそれらはUnicode依存のフレームワークの様子だけど 同じ層にUTF8, UTF16もいるからいつかCharacterUTF8, UTF8Scalarみたいな構造体もできるかもなw



667:デフォルトの名無しさん (ワッチョイ 833c-AZYz)
17/01/26 09:33:06.97 8RDF259k0.net
>>652
String.initに格差があってね
この差も疑問なんだけど
let ca:[Character] = ["a", "b", "c"]
let ua:[UnicodeScalar] = ["a", "b", "c"]
let cs = String(ca)
let us = String(ua) //これが出来ない
let us = String(ua.map(Character.init)) //これは出来る

668:デフォルトの名無しさん (アウアウウー Sa7f-4cPM)
17/01/26 10:39:40.20 k8NBikxqa.net
Swiftに慣れるとSwift以外でのコーディングが煩わしくなるぞ
varとletの明確な使い分けも、それがない言語だと逆にモヤッとする

669:デフォルトの名無しさん (ワッチョイ 6ac9-P4zY)
17/01/26 10:57:10.28 KCQLgRNZ0.net
Stringに関して言いたいことはメーリスで今のうちに言っとけよ
今ちょうどSwift4でStringどうするか議論の真っ最中だから

670:デフォルトの名無しさん (ササクッテロリ Sp13-vNtw)
17/01/26 11:04:45.63 CKOy8ZWqp.net
4は破壊変更なしで、5の破壊変更混みで直すからまだ時間はあるなw
>>653もCharacterとUnicodeScalarをまとめた上位インターフェース作るだろ(適当

671:デフォルトの名無しさん (オイコラミネオ MM76-bF0B)
17/01/26 11:10:44.87 NOZ2YrK+M.net
オプショナルバインディングの利点ってなんだろう?
言葉で説明するのは難しいですわ
nilチェックして強制アンラップでもいいだろって思われそう
どう思う?

672:デフォルトの名無しさん (オイコラミネオ MM76-bF0B)
17/01/26 11:15:35.23 NOZ2YrK+M.net
と思っけど失敗のあるイニシャライザ使う時めっちゃ便利だわ
Appleのリファレンスは説得力あるわ

673:デフォルトの名無しさん (ワッチョイ 1b3c-R94c)
17/01/26 23:16:58.81 ufLIfALs0.net
BB2C使って書き込みしてるけど、こういうブラウザアプリってどうやって作られてるの?
初心者だから全然想像できん

674:デフォルトの名無しさん (ササクッテロリ Sp13-vNtw)
17/01/27 08:27:01.41 Zy0rRYCMp.net
>>659
定期乙

675:デフォルトの名無しさん (ワッチョイ 6f5b-ci5U)
17/01/27 17:31:32.73 MVo+YM4y0.net
>>650
俺は重宝してるけど。
_ = someMethod()

676:デフォルトの名無しさん (ササクッテロリ Sp13-vNtw)
17/01/29 13:24:08.53 MpcYD/kyp.net
let宣言しなくても変数_って使えたのか
いつ変わったんだ、便利じゃねーか

677:デフォルトの名無しさん (ワッチョイ 833c-T3y8)
17/01/29 14:08:41.99 PyqVv5fH0.net
>>662
宣言じゃなくて、定義じゃね?

678:デフォルトの名無しさん (ワッチョイ 9733-4cPM)
17/01/29 15:05:33.45 3Y3DXVvV0.net
アンダーバーってクソすぎやしないか

679:デフォルトの名無しさん (ササクッテロラ Sp13-4cPM)
17/01/29 15:25:26.09 yL6xb8U5p.net
アンダーバーでいいと思います。

680:デフォルトの名無しさん (ワッチョイ 833c-T3y8)
17/01/29 17:02:22.62 PyqVv5fH0.net
アンダスコア

681:デフォルトの名無しさん (スッップ Sdca-2P18)
17/01/29 17:03:21.38 htBmfO4kd.net
アンダースコアや三点リーダー、クソ過ぎやしないか

682:デフォルトの名無しさん (アウアウウー Sa7f-4cPM)
17/01/29 17:19:12.25 EnysbUOea.net
許容範囲だと思います。

683:デフォルトの名無しさん (ワッチョイ 9739-4eSF)
17/01/30 07:33:20.34 qYAaUQoA0.net
_ の書き方はともかく
引数にラベルが必須でないというのは
可読性の確保という面で
選択肢として存在するのはアリだと思うな

684:デフォルトの名無しさん (ワッチョイ 2b8c-EfrK)
17/01/30 08:01:35.96 Jmyw1tRr0.net
C APIをSwiftから叩くために選択肢どころか必須機能なんだよなぁ
ObjCみたいにC APIだけは別の表記するならいいけどさ

685:デフォルトの名無しさん (スップ Sdca-eBhG)
17/01/30 09:17:47.99 djGawl3Pd.net
swiftいいよ書きやすいよ
最近の次世代言語は関数型ばかりだからswiftが最後の希望や

686:デフォルトの名無しさん (ワッチョイ 833c-AZYz)
17/01/30 17:37:30.67 5ceKaohv0.net
ネタ
DictionaryのValueをOptionalにした場合の
削除とnil設定のオーバーロード区別
URLリンク(swiftlang.ng.bluemix.net)

687:デフォルトの名無しさん (ワッチョイ 833c-AZYz)
17/01/30 20:30:32.06 5ceKaohv0.net
ついでに今更ながら>>498の対策
URLリンク(swiftlang.ng.bluemix.net)
どちらにも言えることだけど
意味的に異なるオーバーロードがあると厄介

688:デフォルトの名無しさん (ワッチョイ 9733-4cPM)
17/01/31 08:04:31.17 TojTxigN0.net
詳解Swift 第2版と第3版ってやっぱ内容だいぶ違う?
仕様ころころしててイライラしてるんだけど

689:デフォルトの名無しさん (スプッッ Sd6a-eBhG)
17/01/31 09:09:51.57 qlhVwcaGd.net
その程度でイライラするならswift向いてないよ

690:デフォルトの名無しさん (ササクッテロリ Sp13-vNtw)
17/01/31 10:07:32.51 Wlpmu9Pop.net
だいぶ違うし、4版が出るならまた変わってるだろうなぁ
破壊変更がないとしてもだ
なんで詳細Swiftなんて買ったと言わざるをえない
Qiitaで直近の記事を漁った方がよほど有効だろうよ

691:デフォルトの名無しさん (ワッチョイ afc9-4cPM)
17/01/31 10:44:07.96 IISx8Cj70.net
>>672
keySortedメソッドの引数
by:(Key,Key)->Bool
がよく判りません。
Key型を要素とするタプルを取ってBoolを返すclosure byって意味なんだと思いますが、Key型ってなんですか?

692:デフォルトの名無しさん (アウアウウー Sa7f-4cPM)
17/01/31 10:57:03.39 13oBEuV5a.net
タプルってw
引数を2つとってBoolを返すクロージャだろ

693:デフォルトの名無しさん (オイコラミネオ MM76-bF0B)
17/01/31 11:38:05.84 5xUQa1EZM.net
Keyはラベルです

694:デフォルトの名無しさん (ワッチョイ 833c-AZYz)
17/01/31 12:46:54.40 E6Yo5vL90.net
>>677
ジェネリクスの型パラメータ名
URLリンク(swiftdoc.org)
> struct Dictionary<Key : Hashable, Value>
extensionの中では元定義にある型パラメータ(Key, Value)や
Associated Types(Element, Indexなど)が使える
[Int:Int?] は Dictionary<Int,Int?> の糖衣構文

695:デフォルトの名無しさん (ワッチョイ afc9-4cPM)
17/01/31 14:26:38.67 IISx8Cj70.net
>>680
納得です。
ジェネリクスの型パラメータなんですね!
それでも、こう書くとコンパイルできない。なんでだ?
func keySorted(by:(Key, Key)->Bool) -> [(Key,Value)] {a, b in
return self.sorted{by(a.key,b.key)}

696:デフォルトの名無しさん (ワッチョイ 833c-AZYz)
17/01/31 14:49:05.08 E6Yo5vL90.net
>>681
1つ目の{は関数本体の始まり、2つ目の{がクロージャー
func keySorted(by:(Key, Key)->Bool) -> [(Key,Value)] {
  return self.sorted {a, b in
    by(a.key, b.key)
  }
}

697:デフォルトの名無しさん (ワッチョイ afc9-4cPM)
17/01/31 15:12:54.62 IISx8Cj70.net
>>682
あんた!親切だなぁ。

698:デフォルトの名無しさん (ワッチョイ 1b3c-R94c)
17/01/31 22:05:26.16 Jtcmcjs90.net
プログラミング初心者でiOSアプリ作ってるけど、オススメの学習サイトある?
ドットインストールは全部やってしまった

699:デフォルトの名無しさん (アウアウウー Sa7f-4cPM)
17/01/31 22:25:58.19 cYDluZxDa.net
オススメは、raywenderlich.com やろなぁ
英語だけど

700:デフォルトの名無しさん (ワッチョイ 7fa1-+rHU)
17/01/31 22:39:58.93 BjflOzhk0.net
>>684
それより何作ったらいいかな?

701:デフォルトの名無しさん (ワッチョイ 7eba-eBhG)
17/01/31 22:59:56.23 rB3HMGuL0.net
初心者ならappleの公式ドキュメントでしばらく困らなくね?

702:デフォルトの名無しさん (ワッチョイ afc9-4cPM)
17/02/01 10:21:51.18 P9C8z9K60.net
>>687
しばらくどころか、公式ドキュメントはズゥートお世話になります。
何言ってるか?チンプンカンプンなところもあるけど。
UITableViewの2つのメソッドの使い方がよく判らん。
dequeueReusableCell, register

703:デフォルトの名無しさん (ワッチョイ afc9-4cPM)
17/02/01 10:38:50.47 P9C8z9K60.net
>>684
日本語、独学だけでiOSアプリを自在に作れる様にはなれない。
英文でしか、入手できない情報が多いから。
英語で情報取れるなら、独学でOK!
これが現実。

704:デフォルトの名無しさん (ワッチョイ aade-EfrK)
17/02/01 11:44:08.43 nI3xSAO90.net
[SDK]iPhoneアプリ開発初心者質問箱47[touch][iPad]
スレリンク(mac板)

705:デフォルトの名無しさん (スプッッ Sd6a-T3y8)
17/02/01 12:10:48.46 rrXFdmRqd.net
>>689
ちょっと違うんじゃないないかな。
Appleは、公式に日本語資料もリリースしているけれども、最終的には英語の資料を見るように書いてある。
それに、帰結すると思う。
よって
> 英文でしか、入手できない情報が多いから。
では無くて、英文で入手しなくてはならない。
> 英語で情報取れるなら、独学でOK!
これが現実。
まーこれは、正解。
その通りだね。

706:デフォルトの名無しさん (オイコラミネオ MM76-bF0B)
17/02/01 12:12:02.48 smtLVi82M.net
>>688
そのメソッドはね、セル自体を更新する時に使うよ
チェックマークをつけたり、外したり

707:デフォルトの名無しさん (ワッチョイ 13b6-UFRj)
17/02/03 09:03:28.41 QkHJCDQQ0.net
すみません。質問よろしいでしょうか。
今、macでテストアプリ作ってるんですが、
アプリ内のボタンを押したらキーボードでショートカットを入力した状態(画面切り替えの' ^← 'とか)にする方法はないでしょうか?
ご教授お願いいたします

708:デフォルトの名無しさん (ワッチョイ 7fc9-vqxm)
17/02/03 10:34:26.43 9keII8ru0.net
スレチ

709:デフォルトの名無しさん (スフッ Sd9f-4SR0)
17/02/03 12:29:41.54 REH9prgEd.net
>>552
古い話にレスつけて悪いが

この場合のdelegateはiOS/macOSのライブラリの話なので
言語の教科書には出てこない
操作対象と処理を行う所を分けるしくみの概念的な名称
勉強したければiOS/macOSのプログラミングの資料を参照するとよい

protocolはSwiftの言語仕様なのでSwift言語の教科書で説明される
共通の名称で処理を受け付けることを保証するしくみ

OSのdelegateの多くはswiftではprotocolを使って実装されている

710:デフォルトの名無しさん (ワッチョイ 13c9-kDlj)
17/02/03 12:54:13.39 OvWQoQse0.net
delegateってのは、まあ、いろんなコンテクストで出てくるから混乱するけど、
制御の逆転、っていう設計を実装する時にでてくるパターンとか、プロパティー変数だとかなんだよねぇ。

だから、言語の教科書には出てこない。Design Patternの本には出てくるかも。
教科書に出てきていても良い様な気がするけど、そんな事を上手く説明できる
著者も少ない事もあって、和文では良い説明がされているのを見た事無いなぁ。

delegateがわからんと、Framework/Libraryの違いが理解できんからね。

まあ、ここの辺りが障壁になってるから、俺みたいなおっさんでも食っていける
わけだが!

711:デフォルトの名無しさん (アウアウウー Sa07-kDlj)
17/02/03 13:07:30.01 QCj1HTOka.net
イベントドリブンになれたVBプログラマならなんとかなるやろ使うだけなら
設計する側になるとあれやろうけど

712:デフォルトの名無しさん (ワッチョイ 13b6-UFRj)
17/02/03 14:12:12.30 QkHJCDQQ0.net
>>693
スレチみたいなので他のところ行ってきます
すみませんでした

713:デフォルトの名無しさん (ワッチョイ 7f3c-6sTg)
17/02/03 15:29:58.35 p7fNNQ2Y0.net
>>695
詳解Objective-Cにはデリゲートの節があるよ
分かりにくいから役には立たないけどね

714:デフォルトの名無しさん (ワッチョイ 934e-2G09)
17/02/03 15:59:32.48 GQ++c1010.net
delegate:委譲 delegater:委譲元 delegatee:委譲先
delegaterにdelegateeの参照を持たせてコールバックしてもらう
tableViewにviewControllerの参照を持たせてcellForRowを呼んでもらう

715:デフォルトの名無しさん (ワッチョイ 934e-2G09)
17/02/03 16:02:25.45 GQ++c1010.net
間違い -> 委譲元:delegator

716:デフォルトの名無しさん (ワッチョイ 7f3c-6sTg)
17/02/03 17:13:14.47 p7fNNQ2Y0.net
細かいけど委譲はdelegation
delegateって言葉は基本的に委譲先のオブジェクトを指す言葉として使われてると思うよ
delegate == delegate object == delegatee
URLリンク(developer.apple.com)

717:デフォルトの名無しさん (スフッ Sd9f-4SR0)
17/02/03 19:50:02.27 REH9prgEd.net
最初のうちって
言語の話と、OSやライブラリの仕組みの話と、開発ツールの話が
違うってことに気付かないんだよね
でもこれに気づけないと、正しい教科書にすらたどり着けない
意外と大きな落とし穴

718:デフォルトの名無しさん (ワッチョイ 135b-C9DF)
17/02/03 20:01:45.15 j/Uvz34o0.net
>>703
自分が何を知りたいのか?が判るまで、結構時間かかる人多いね。

719:デフォルトの名無しさん (アウアウウー Sa07-kDlj)
17/02/03 20:55:42.27 MnLqnHc9a.net
 
  以上。

720:デフォルトの名無しさん (スフッ Sd9f-4SR0)
17/02/04 15:18:45.31 EO0q2wxld.net
>>693さんは無事に目的のスレにたどり着いたかな?

自動化に主眼があるならAutomatorかAppleScript

テストに主眼があるならXCTestのUITest

あたりなんだろうけど、残念ながら詳しくは無い

721:デフォルトの名無しさん (ワッチョイ 3fb6-UFRj)
17/02/04 21:20:56.34 hsGpXHdO0.net
>>706
おおお!ありがとうございます!
applescriptをswiftで呼び出したらいいのかな?
やってみます!

722:デフォルトの名無しさん (ワッチョイ 3fb6-UFRj)
17/02/04 21:54:16.56 hsGpXHdO0.net
>>706
できました!
本当にありがとうございます!

723:デフォルトの名無しさん (ワッチョイ b333-tZqJ)
17/02/04 21:55:53.65 TiE86E8B0.net
Swiftおつ

724:デフォルトの名無しさん (ワッチョイ 7f3c-6sTg)
17/02/04 22:36:30.18 2gkSNY4M0.net
AppleScriptに比べると面倒くさいけど直接キーボードイベントを発火させる方法もあるよ

//Cmd+Tabキーの例
let tab_down = CGEvent(keyboardEventSource: nil, virtualKey: 0x30, keyDown: true)
let tab_up = CGEvent(keyboardEventSource: nil, virtualKey: 0x30, keyDown: false)
tab_down?.flags = CGEventFlags.maskCommand
tab_up?.flags = CGEventFlags.maskCommand
tab_down?.post(tap: CGEventTapLocation.cghidEventTap)
tab_up?.post(tap: CGEventTapLocation.cghidEventTap)

725:デフォルトの名無しさん (ワッチョイ ff93-4SR0)
17/02/05 11:11:41.55 vWH4gLvD0.net
>>708
なんかお役に立てたようで

ほとんど当てずっぽうだったんだけどね

可能なら、SwiftからAppleScript呼び出す辺りのコードを公開してもらえれば
他の人の参考になるかも

726:デフォルトの名無しさん (ワッチョイ 135b-vqxm)
17/02/05 11:19:54.99 DgXxXeRF0.net
>>711
import Foundation

let task = NSTask()
task.launchPath = "/usr/bin/osascript"
task.arguments = ["~/Desktop/testscript.scpt"]

task.launch()

727:デフォルトの名無しさん (ワッチョイ 7f3c-mNa5)
17/02/05 14:35:54.66 PLwA9BVe0.net
話題性の無い言語になってきたな。
スレの勢いも無くなってきてる。
一発屋だったのかこの言語。

728:デフォルトの名無しさん (アウアウウー Sa07-kDlj)
17/02/05 14:49:06.57 u0BexBI4a.net
Swift楽ですよ
Obj-Cと比べて体感的に記述量が4割減に感じますわ

729:デフォルトの名無しさん (ワッチョイ b333-kDlj)
17/02/05 15:53:34.11 nMpDa1VZ0.net
短い=可読性がよくなる
ってわけではないと聞いたことがあるのですが実際の所どうでしょうか?

730:デフォルトの名無しさん (ササクッテロリ Spa7-gHkU)
17/02/05 15:57:06.80 u0uQCFq0p.net
日本語と英語、どっちが優れている?って愚問と同じレベル

731:デフォルトの名無しさん (アウアウウー Sa07-kDlj)
17/02/05 16:34:01.05 u0BexBI4a.net
まずね、クラス一つ作る時の億劫さが違う
Obj-Cだと、ひとまずNSObject継承して、ヘッダファイルに@interface書いて、@property書いて、実装ファイルの@implementationに @synthesize書いて、イニシャライザ書いてってなるけど、
Swiftだと、
class Monster {
  let name: String
  var hp: Int
  init(name: String, hp: Int) {
    self.name = name
    self.hp = hp
}
}
って感じでバッバッとスクリプト感覚で定義できるから、思考を極力止めないでコーディング出来る
構造体だとイニシャライザも自動生成なのでさらに楽
struct Monster {
  let name: String
  var hp: Int
}
Obj-Cと比べて記述量が圧倒的に有利
今じゃ残業もなくなってObj-Cプログラマを横目に定時に帰って彼女とイチャイチャしてます。
もっと早くやっとけばよかった・

732:デフォルトの名無しさん (ワッチョイ 135b-vqxm)
17/02/05 17:09:05.45 DgXxXeRF0.net
>>717
Obj-Cってあんまり書いた事無いので参考になりました。
詳解Obj-Cってのを中古本で買って、ペラペラやった位なので、
ほんとご意見参考になりました。

733:デフォルトの名無しさん (ワッチョイ 037b-eX/G)
17/02/05 17:13:01.45 iKJkAlzP0.net
>>713
お前さんみたいな荒らしの勢いが落ちてるって、それ一番言われてるから
Apple信者 vs Appleアンチ: betaから1.x
Swiftユーザ vs ObjC信者: 2.x
Swiftユーザ vs C++ユーザ: 3.0前後
beta以来、こんな対抗煽りがあったけどC++煽りが通用しなくなってきて勢い落ちてる
そろそろ vs 新興言語(Rust, Go)で荒らす時期なんじゃないの?(助言

734:デフォルトの名無しさん (ワッチョイ b333-kDlj)
17/02/05 17:59:05.07 nMpDa1VZ0.net
>>717
www

735:デフォルトの名無しさん (ワッチョイ 3fb6-UFRj)
17/02/05 19:08:24.19 VgP7nWQb0.net
>>710
こんな方法もあるんですね!
こっちも試してみます。ありがとうございます。
>>711
記述方法があってるかはわかりませんが、初心者なのでご容赦ください。
こんな感じでキAppleScriptを呼び出しました。
let appleScript = 「使いたいAppleScriptの記述」
NSAppleScript(source: appleScript)?.executeAndReturnError(nil)

736:デフォルトの名無しさん (ワッチョイ cfba-uZek)
17/02/05 22:21:36.88 o/8EHNtf0.net
他言語から来ると引数のラベルの存在意義が理解できず、むしろとても煩わしいので全て_付けてるのですが、なんなんですか?これ
この邪魔くさいラベルが必要な理由を教えてください


737:



738:デフォルトの名無しさん (アウアウウー Sa07-kDlj)
17/02/05 22:33:36.96 4p/Nn5VFa.net
関数を作った本人ならその時は分かるかもしれんが、第三者がその関数を使う時とか後から保守する時にわかりやすいようにだろ

739:デフォルトの名無しさん (ワッチョイ 7f3c-6sTg)
17/02/05 22:55:46.13 eIQFXmLo0.net
>>722
これははげしく同意
理由は名前と引数・戻り値の型が同じでも引数の外部名が違えば違う関数として扱いたいから
NextStepの遺産じゃないのかな

740:デフォルトの名無しさん (ササクッテロリ Spa7-gHkU)
17/02/05 23:04:05.83 u0uQCFq0p.net
>>722
>>650

741:デフォルトの名無しさん (ワッチョイ 7fc9-SsPq)
17/02/06 00:44:00.22 SAGpF4BT0.net
>>717
なるほどね。とりあえず彼女のスリーサイズとカップ数をあげてくれ

742:デフォルトの名無しさん (ワッチョイ 633c-0MWP)
17/02/06 00:49:54.19 dg7Gkhyu0.net
>>722
他言語でも特に分かり辛い引数は説明用変数を用意したりしてたから
俺の場合ラベルはすんなり腑に落ちたな
sh.shiftRows(r, r, 1, true, false);
 ↓
boolean copyRowHeight = true;
boolean resetOriginalRowHeight = false;
sh.shiftRows(r, r, 1, copyRowHeight, resetOriginalRowHeight);

743:デフォルトの名無しさん (ワッチョイ 7fc9-vqxm)
17/02/06 01:01:01.45 3ZIy1rLW0.net
>>722
named parameterでググれよ

744:デフォルトの名無しさん (ワッチョイ cfba-UJvE)
17/02/06 01:20:02.58 0dGh9mJF0.net
>>724
なるほど理解しました
swiftに採用したのは頂けませんね
第一引数だけラベル必要としないのがまた理解に苦しみます

745:デフォルトの名無しさん (ワッチョイ 7f3c-6sTg)
17/02/06 01:27:27.04 +8BGH8XP0.net
ラベル指定が必須ってのが面倒くさい元凶
必要な時に書けるようになってるのは何も悪くない
(foo, bar)ってタプルを使いたい時に( _: foo, _: bar)って書かないといけなかったらキレるよね

746:デフォルトの名無しさん (ワッチョイ 7f3c-6sTg)
17/02/06 01:33:52.92 +8BGH8XP0.net
>>729
>第一引数だけラベル必要としないのがまた理解に苦しみます
それはSwift3で修正されたんじゃ?

747:デフォルトの名無しさん (ワッチョイ 7fc9-vqxm)
17/02/06 02:21:15.75 3ZIy1rLW0.net
関数を使う側はIDEが補完してくれるんだから何も面倒くさいことなんて無いはずだろ
それなのにその存在しないコストを気にして関数定義時に毎回わざわざ "_" 書いてるって?
ドMなのかな?

748:デフォルトの名無しさん (アウアウウー Sa07-kDlj)
17/02/06 02:42:20.02 My0G4nGHa.net
俺の長年の研究によると
英語が苦手なやつほど、いろんな所を省略したがる
変数名とか関数名も面倒くさがって日本語名を使う傾向がある

func shohizeiKeisan(kakaku: Int) -> Int

みたいな感じで定義するから、呼び出し側で
let kekka = shohizeiKeisan(kakaku: 1200)
みたいな呼び出し方になってラベルの冗長性があまり効果的に使われない

たまに英語を使ったか思えば、綴りを間違ってたり変な短縮の仕方してたりする
オープンソースにすると恥ずかしいレベル

749:デフォルトの名無しさん (アウアウウー Sa07-kDlj)
17/02/06 02:49:54.81 My0G4nGHa.net
calculateTax(forPrice price: Int) -> Int
みたいに書けば
let tax = calculateTax(forPrice: 1200)
違和感ないんだけど

750:デフォルトの名無しさん (ワッチョイ 7f3c-6sTg)
17/02/06 05:03:00.89 +8BGH8XP0.net
>>734
>let tax = calculateTax(forPrice: 1200)
こういう例がSwift本でもよくあるんだけどマジックナンバーを直接書くことなんてほぼないからね
calculateTax(price)で十分なところを
calculateTax(forPrice: price)みたいな冗長な表現になってノイズが増えることのほうが多い

751:デフォルトの名無しさん (ワッチョイ ff93-4SR0)
17/02/06 08:42:17.87 VccDqIOI0.net
>>721
さんきゅ
参考になります

752:デフォルトの名無しさん (スプッッ Sd9f-UJvE)
17/02/06 09:08:43.07 cYxXlAn6d.net
>>735
ほんとそれ

753:デフォルトの名無しさん (スフッ Sd9f-4SR0)
17/02/06 09:48:23.52 6ukkaCk+d.net
>>729
せっかく�


754:。からSwift勉強するならSwift3にしませう



755:デフォルトの名無しさん (エムゾネ FF9f-4SR0)
17/02/06 10:13:04.33 LieVvyVtF.net
>>735
実際には引数の違いで長ったらしい関数名になっているライブラリなどの場合には
関数名を短く、同じ関数名を使用する事が出来るので理解しやすくなる

教科書の例題に出てくる程度の関数の量と名前の長さなら問題無いんだけどね

756:デフォルトの名無しさん (アウアウウー Sa07-kDlj)
17/02/06 10:16:13.86 bt8MJocIa.net
関数の引数が何かなんて作った本人はよく知ってるだろうけど、第三者には説明がないとわからないわけで、例えば、価格と税率の2つの引数を取るような関数だったら、第一引数が価格なのか、税率なのかは説明がないと分からないし
渡すべき引数も様々に変わる。
だから、関数の仕様を把握する上で俺は>>735の書き方に違和感は感じないけれど、それが冗長に思えるならもう感覚の問題というしかないな

757:デフォルトの名無しさん (ワッチョイ a317-4SR0)
17/02/06 10:26:20.88 pkGDAQrJ0.net
>>717
property宣言したら自動でsynthesizeされるので記述不要
何年か前からね

758:デフォルトの名無しさん (ワッチョイ 633c-vqxm)
17/02/06 10:26:53.85 vLeuYaJ10.net
>>733
func calc消費税(価格: Int) -> Int

これだとIDEで保管もしてくれるし、最高!
自分は日本語使ったことないけど

759:デフォルトの名無しさん (ササクッテロリ Spa7-gHkU)
17/02/06 10:30:32.27 VcPP6UDEp.net
日本語入力/英語入力の切り替えが最悪だな
ネタでも最高!とか言っちゃえる辺りがすごい

760:デフォルトの名無しさん (ワッチョイ 633c-vqxm)
17/02/06 10:33:25.09 vLeuYaJ10.net
>>743
お前Xcode使ってないの?
関数を使用する時は、最初の数文字入力するだけで保管されるんだぜ?
作成時のコスト?大したことねーよ、きっと

761:デフォルトの名無しさん (ワッチョイ 633c-0MWP)
17/02/06 10:34:23.91 dg7Gkhyu0.net
>>735
その手の冗長性は俺としては良いと思うんだけどな
受け売りだけど「間違ったコードは間違って見えるようにする」という観点的に
受ける側と渡す側の合致が目視で分かるのは安心感がある
まぁ適度を考慮してアンダースコアも割と使うけど

762:デフォルトの名無しさん (ササクッテロリ Spa7-gHkU)
17/02/06 10:44:17.12 VcPP6UDEp.net
>>744
「きっと」にワロタw

763:デフォルトの名無しさん (スプッッ Sd9f-UJvE)
17/02/06 11:25:24.96 2jscAFeGd.net
>>740
普通は他人にわかるようにするためにドキュメントコメントを付けるものだからやっぱりラベルなんていらんね

>>739の利点なら理解はできるけど

764:デフォルトの名無しさん (アウアウウー Sa07-kDlj)
17/02/06 11:32:13.07 bt8MJocIa.net
>普通は他人にわかるようにするためにドキュメントコメントを付ける

うん普通はね
でも世の中には強制でもされないとコメント書かない奴がいっぱいいる
それに関数ベースで説明的なラベルが付いてれば、わざわざ関数のコメント読まなくても
IDEの補完が効いて関数の仕様を理解しやすい

765:デフォルトの名無しさん (スフッ Sd9f-4SR0)
17/02/06 12:19:34.07 6ukkaCk+d.net
>>747
うちの合言葉は
「読みやすいソースとコメントは半年後の自分へのメッセージ」
「多少冗長に思えても、半年後の自分が困らないように書こう。書き直しも躊躇するな。」

以前は「メンテする人・使う人」だったんだけど「半年後の自分」に言い換えてから
割と真面目に対応してくれる人が増えた

766:デフォルトの名無しさん (ワッチョイ 132b-eX/G)
17/02/06 12:19:53.13 QBi3Y3km0.net
昔のObjC I/Fみたいに[前置詞]+[名詞]なラベルなら意味あるけど
今のObjCやSwift I/Fみたいに[前置詞]だけのラベルにはその論(ラベルだけで説明)は時代遅れだと思った

今は「ラベルは前置詞、変数名は名詞」で定義して、IDE(Xcode)のコード補完で関数説明じゃない
あ、コメントは書かないやつ多いし、自分もせっせと書くの面倒だから、関数定義で説明できるのは好ましい

767:デフォルトの名無しさん (ワッチョイ 132b-eX/G)
17/02/06 12:21:28.85 QBi3Y3km0.net
>>750>>748へのレス

768:デフォルトの名無しさん (ワッチョイ a317-4SR0)
17/02/06 12:46:46.20 pkGDAQrJ0.net
>>742
Swiftだと日本語の関数名も補完されるのか。いいな。
Objective-Cだと日本語が混ざると補完が効かなくなったはず。

769:デフォルトの名無しさん (ブーイモ MMc7-XgLl)
17/02/06 15:47:59.82 0PGGfaNyM.net
>>722
他言語ってLLだろどうせ。LLで言語名乗るなよスクリプトっていえよ
TypeScriptでもScalaでもJava (lombok)でもカタいのは全てlabel付きの方向に行ってるのに
この時代に乗れない男を引き取ってくれる優しい言語はこの先現れるのだろうか
破棄、再評価を繰り返すこの業界で全くないとは言い切れんが

770:デフォルトの名無しさん (ワッチョイ 13c9-kDlj)
17/02/06 16:37:12.35 M531ILGV0.net
>>753
メソッド呼び出し時にラベルとともに引数を書くのはSwiftだけだと思ってたら、そうじゃないのね?

いまScalaってのをググってみたけど、ラベルなしでメソッド定義、呼び出ししてるみたいだが?

771:デフォルトの名無しさん (アウアウエー Sa5f-kDlj)
17/02/06 16:51:52.57 7LeUyz1la.net
つ Objective-C

772:デフォルトの名無しさん (ワッチョイ 7f3c-6sTg)
17/02/06 17:58:08.26 +8BGH8XP0.net
>>740
呼ぶ側にラベルを強制する必要なんてないでしょ
C#の例だけどラベル無しでも有りでも呼べるし有りなら順序も変えられる

static int CalculateBMI(int weight, int height) {...}
var weight = 60, height = 180;
CalculateBMI(weight, height); //<― こういう明らかなのはこれで呼びたい
CalculateBMI(weight: weight, height: height);
CalculateBMI(height: height, weight: height);

Swiftの仕様はAppleが既存ライブラリへの影響を最小限にするための苦肉の策だよ

773:デフォルトの名無しさん (ワッチョイ 7fc9-vqxm)
17/02/06 18:58:04.37 3ZIy1rLW0.net
>>756
それ誰かがうっかり
CalculateBMI(height, weight);
って書いてエンバグしてた場合気付けなくね

それともC#って順番じゃなくて変数名で引数に対応付けてくれんの?

JavaScript(ES2015)ではObjectを引数に取ることで疑似名前付き引数にする手法とObject Literal Shorthandの合せ技でそういうこと出来るようになってるけど

774:デフォルトの名無しさん (ササクッテロロ Spa7-kDlj)
17/02/06 19:38:32.44 +DEdH8rPp.net
だよな
関数を書いた本人は引数の順番知ってるかもしれんけど、第三者とか未来の自分はどうだろう

775:デフォルトの名無しさん (スプッッ Sd9f-UJvE)
17/02/06 21:30:09.99 2jscAFeGd.net
呼び先のメソッド見ればわかるし

776:デフォルトの名無しさん (ワッチョイ 633c-vqxm)
17/02/06 22:16:02.24 vLeuYaJ10.net
>>759
自分が使う時は見るけれど、後から第三者が書いたコード読むときにいちいち確認するのはめんどくさい

777:デフォルトの名無しさん (ワッチョイ 7f3c-6sTg)
17/02/06 22:18:34.56 +8BGH8XP0.net
>>757
>>758
最終的にはテスト書こうねって話だけど
ある程度の補完機能のあるエディタを使ってれば定義を見ながらコード書くから順番が分からないこともないし間違える可能性もすげー低い
それでも可能性はゼロじゃないけどこの手のミスを防ぐためだけなら可読性を犠牲にするほどの価値があるとは思わない
アンスコ書かなくてもデフォルトは省略可能で強制したい時だけ指定できるようにすれば十分

静的型付け言語なんだから型チェックに引っかかるような書き方を楽にできるようにしていくほうが言語としてはいい気がする

778:デフォルトの名無しさん (アウアウエー Sa5f-kDlj)
17/02/06 22:41:12.32 eyNF5CHCa.net
ま人それぞれなのかもの知らんけど、俺はXcodeの補完機能とラベルのおかげでコーディングがすごい楽になったわ
引数の多いAPIとか呼び出す時もわかり易い

そもそも他の言語だって、関数を定義する時は引数名と型を指定するわけで、そこの労力は変わらない(Swiftの場合は、引数名に加えて別のラベル名も指定できるけど、これは別に書かなければ引数名がそのままラベル名になる)し、
関数を呼び出す時も、何度も言うけどXcodeの補完が効くので、tabキー押しながら値を埋めていくだけで特に手間はかからない
そこまでラベルを嫌がる理由が俺には理解できない

779:デフォルトの名無しさん (ワッチョイ 7fc9-vqxm)
17/02/06 22:48:44.79 3ZIy1rLW0.net
ある日API側で
static int CalculateBMI(int height, int weight) {...}
に変わってたら?
ラベル書いてればコンパイラが引数間違ってるよって教えてくれるけど、間違える可能性すげー低いという思い込みでラベル書かない人は絶対気付けないよ

テスト書けばいい?
その前にまずラベル書いてくださいよ(苦笑

780:デフォルトの名無しさん (アウアウエー Sa5f-kDlj)
17/02/06 22:52:49.93 eyNF5CHCa.net
>>761
可読性を犠牲にって、ラベルのおかけで可読性は上がると思うんだが...
無茶苦茶なラベル名つけてない限り

781:デフォルトの名無しさん (ワッチョイ cfba-UJvE)
17/02/06 22:57:21.06 0dGh9mJF0.net
>>763
そんな変更を勝手に加える危ないAPIなんて使わないという選択をまず取る

782:デフォルトの名無しさん (アウアウエー Sa5f-kDlj)
17/02/06 22:59:24.91 eyNF5CHCa.net
予知能力者かな

783:デフォルトの名無しさん (ワッチョイ 7f3c-6sTg)
17/02/06 23:29:35.74 +8BGH8XP0.net
>>763
ラベル書いてたら普通はエラーにならずそのまま使えるよ。Swift以外ではね
可読性が上がるのなら書くしそうじゃないなら書かない、そういう選択肢が無いのが俺は嫌

784:デフォルトの名無しさん (ワッチョイ cf42-qddC)
17/02/06 23:29:54.33 DXHlWVxm0.net
>>735
c#、pythonみたいにラベル=仮引数名で十分

785:デフォルトの名無しさん (アウアウエー Sa5f-kDlj)
17/02/06 23:39:42.35 eyNF5CHCa.net
>>767
選択肢あるだろ アンスコ( _ )

786:デフォルトの名無しさん (ワッチョイ cfba-UJvE)
17/02/06 23:57:51.11 0dGh9mJF0.net
xcodeが最初に自動生成するコードもアンダースコア付いてるんだよなあ

787:デフォルトの名無しさん (アウアウエー Sa5f-kDlj)
17/02/07 00:02:13.06 d/8njjdTa.net
>>770
いやそれは昔からあるObj-Cで書かれたAPIの呼び出し方に合わせるためだろ

788:デフォルトの名無しさん (ワッチョイ 7fc9-vqxm)
17/02/07 00:03:29.25 U45A8ASp0.net
>>770
API Design Guidelines読めよ
ラベルなし全てが否定されてるわけじゃない
単に面倒だとか安全性を考えてないとか他の言語では~とかそういうアホな考えでラベルなしを選択するのがアホの極みだっていうだけだ

789:デフォルトの名無しさん (ワッチョイ 7f85-0MWP)
17/02/07 00:52:48.71 ZXoOddG/0.net
Autolayoutの親Viewって何?
自分で設定するの?それとも
ViewControllerのこと?

790:デフォルトの名無しさん (アウアウエー Sa5f-kDlj)
17/02/07 01:02:31.40 d/8njjdTa.net
レイアウト対象になってるViewの親Viewのことじゃねーの?
つうか質問する時に説明を省くんじゃねーよ
Autolayoutの親Viewってどこに書いてあったんだよ
それが書かれた文脈がわからないと想像でしか答えられんわ
つうか疲れたからもう寝る

791:デフォルトの名無しさん (ワッチョイ 7f3c-6sTg)
17/02/07 02:36:50.69 GtuDXK2z0.net
>>769
w マジレスするとアンスコにしたらラベル付き呼びたくても呼べない その逆もしかり
関数作る時に他言語では不要な意思決定がSwiftでは必要
言語仕様が変わらない限りどうしようもないからこの話題はこの辺で

792:デフォルトの名無しさん (ササクッテロラ Spa7-kDlj)
17/02/07 02:51:43.97 XrNu72Jop.net
>>775
そんな器用なことしたいならオーバーロードすればいいだ

func add(_ a: Int, _ b: Int) -> Int {
 return a+b
}

func add(a: Int, b: Int) -> Int {
 return add(a, b)
}

// お好きな呼び方でぇ
let x = add(10, 20)
let y = add(a: 10, b: 20)

793:デフォルトの名無しさん (スフッ Sd9f-4SR0)
17/02/07 08:38:57.64 7sv3izQhd.net
>>775
ラベルが要らないと思ったからアンダースコアにしたんだろ?
言ってる事が矛盾してね?

呼び出し時にラベルを付けたいと思うなら
それはラベルを付ける価値があるという事で
強制されたところでだれも不便に思わないよ

794:デフォルトの名無しさん (スフッ Sd9f-4SR0)
17/02/07 08:41:22.70 7sv3izQhd.net
>>775
>関数作る時に他言語では不要な意思決定がSwiftでは必要

無自覚に行われる小さな意思決定をプログラマに明示的に自覚させると言うのは
Swiftの設計思想の結構大切なところだと思うよ

795:デフォルトの名無しさん (ワッチョイ c366-4SR0)
17/02/07 21:14:52.34 4jeefcmH0.net
それでなにかよくなるのかね

796:デフォルトの名無しさん (スフッ Sd9f-4SR0)
17/02/07 21:31:12.11 7sv3izQhd.net
もちろん!

797:デフォルトの名無しさん (ワッチョイ b333-mNHV)
17/02/07 22:24:06.04 ZIH2X64r0.net
具体的におなしゃす

798:デフォルトの名無しさん (ワッチョイ 7f3c-6sTg)
17/02/07 22:28:45.43 GtuDXK2z0.net
>>778
関数作る時に決めるべきことと使う時に決めるべきことの違いを理解しようか

799:デフォルトの名無しさん (アウアウエー Sa5f-kDlj)
17/02/07 22:42:00.91 xaIKpgD2a.net
関数の仕様は作る側が使いやすいように決めればいいことだし、使う側は設計者の意図を汲み取ってそれに従うか、使いにくいと思ったら、継承するなりextensionで拡張するなりすればいい話

例えばsimdモジュールとか見ると、ラベル有り/無しバージョンのイニシャライザを提供してる

float2
public init(_ x: Float, _ y: Float)
public init(x: Float, y: Float)

どっちでも書ける
let v1 = float2(10, 20)
let v2 = float2(x: 10, y: 20)

float3、float4も同様

float3
public init(_ x: Float, _ y: Float, _ z: Float)
public init(x: Float, y: Float, z: Float)

float4
public init(_ x: Float, _ y: Float, _ z: Float, _ w: Float)
public init(x: Float, y: Float, z: Float, w: Float)

800:デフォルトの名無しさん (アウアウエー Sa5f-kDlj)
17/02/07 23:01:01.74 xaIKpgD2a.net
simdの設計者は

public init(_ x: Float, _ y: Float)
public init(x: Float, y: Float)

の2つのバージョンのイニシャライザは用意したけど、例えば第一引数だけラベル付きのイニシャライザ

public init(_ x: Float, _ y: Float)

は用意しなかった。
理由は分からないけれど、それを用意する必要性もメリットも感じなかったのかもしれないし、返って混乱の元になると考えたのかもしれない。
設計思想というほどのものでもないかもしれないけどそれが意図

でもそれがどうしても必要だという明確な理由があるなら extensionで追加すればいい
そんな理由があるとは思えないけど...

extension float2 {
 public init(x: Float, _ y: Float) {
  self.init(x, y)
 }
}

801:デフォルトの名無しさん (ササクッテロリ Spa7-gHkU)
17/02/07 23:02:03.89 EhOLSQDnp.net
オプショナルで荒らしてたヤツが、キーワード_で荒らしてるだけだから
そんな真面目に相手しなくても良いだろうに

相手してる子も荒しで、荒し同士の空中戦かもだけど

802:デフォルトの名無しさん (ワッチョイ 7f3c-6sTg)
17/02/07 23:07:09.27 GtuDXK2z0.net
>>783
作る時の労力が増えるだけじゃなく使う時にコード補完で区別つかない
現状は一見同じシグニチャに見えるメソッドが2個ずつ並ぶことになる
それでもメリットが上回ると思う場合があったらはオーバーロードすればいいじゃね

803:デフォルトの名無しさん (アウアウエー Sa5f-kDlj)
17/02/07 23:12:30.28 xaIKpgD2a.net
まぁXcodeの補完はまだ改善の余地があるということで
それよりも早くリファクタリングできるようにしてほしい
Swiftの仕様が完全に固まるまで対応しないつもりかね

804:デフォルトの名無しさん (アウアウエー Sa5f-kDlj)
17/02/07 23:20:36.88 xaIKpgD2a.net
>>786
労力?
別バージョンのシグニチャを用意するぐらい然程労力とも思えないけど
全ての引数の組み合わせでラベル有無バージョンを用意したいってのなら別だけど
そこまで自由度を待たせるなら、ディクショナリ一つを引数にして、キーを引数名にした方が、設計意図にあってるかものしれない

805:デフォルトの名無しさん (ワッチョイ a317-4SR0)
17/02/07 23:35:58.62 vFUY1Q6g0.net
柔軟性が高過ぎるのも考えものだね
ライブラリ毎に流儀が存在したら使い辛い

806:デフォルトの名無しさん (ワッチョイ ff93-4SR0)
17/02/08 00:37:17.57 wuN4GLLw0.net
>>787
それホント
リファクタリングアシスト早く欲しい
ちょっとした変数名、関数名の変更でもアシスト無いと億劫でつい放置しちゃう

807:デフォルトの名無しさん (スフッ Sd52-S0So)
17/02/09 19:29:33.7


808:2 ID:bGGm+Vsdd.net



809:デフォルトの名無しさん (ワッチョイ 9293-S0So)
17/02/11 08:39:06.29 4V1/h4XS0.net
オムニグラフってswiftのクラス図作成に対応してるの?
誰か使ってない?

810:デフォルトの名無しさん (ワッチョイ cf3c-S0So)
17/02/11 15:54:18.34 oskBDXOt0.net
プログラミング初心者で勉強のためにボタンを押したら効果音が出るという単純なアプリを作りたいんだけど難しい?

811:デフォルトの名無しさん (JP 0Hb3-8/DI)
17/02/11 16:26:02.45 bfT7og+wH.net
swiftにこだわるな

812:デフォルトの名無しさん (アウアウエー Sa4a-C9ZD)
17/02/11 16:38:59.73 Edv5NWG3a.net
考えるな、感じろ

813:デフォルトの名無しさん (ワッチョイ 76ba-9CRV)
17/02/11 17:08:57.07 qQmrAco80.net
聞いて感じて考えて

814:デフォルトの名無しさん (アウアウオー Sa8a-S0So)
17/02/11 17:19:51.41 2PZ2/Gs1a.net
swiftは使った事ないけど、AudioPlayerクラスとかあれば、音声ファイル読み込んで、Playメソッドとかで鳴らせるはず。
iOS用の言語なら在るだろうから、簡単じゃないかな。
Windowsストアアプリで全く同じ機能作った時に簡単に作れた。

815:デフォルトの名無しさん (ササクッテロラ Spf7-uAX+)
17/02/11 17:47:29.76 8E8IVrXfp.net
なんで使ったことないのにこのスレにいるのやら
いやまぁ理由は分かるんだが

>>793
初心者向けのiOSアプリ開発書籍買ったら良さげ
そろそろ swift 3 に対応した本が出てるだろ

816:デフォルトの名無しさん (ワッチョイ b285-cGUq)
17/02/11 17:51:07.98 ScJtra280.net
>>793
C#に比べたら面倒

ボタンを配置して
swiftソースにACTIONでつないで
そこに>797のいうよう
やる感じ

ソースとして書く部分は10行もないかと

817:デフォルトの名無しさん (ワッチョイ f23c-DoU+)
17/02/11 18:19:38.45 ria0yk5C0.net
>>793
いろいろやり方あるけどAVFoundationのAVAudioPlayerを使うといいと思う
プログラミング初学者だといくつかはまりポイントあるだろうから困ったら質スレで聞けばいい

let soundURL = Bundle.main.url(forResource: “soundfile”, withExtension: "mp3")!
player = try! AVAudioPlayer(contentsOf: soundURL)
player.play()

818:デフォルトの名無しさん (ワッチョイ 935b-3OfB)
17/02/11 19:12:24.65 SqFaix0v0.net
>>793
import AVFoundation

@IBAction func PushButton(sender: AnyObject) {
let sound_data = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("sample", ofType: "mp3")!)
var audioPlayer: AVAudioPlayer = AVAudioPlayer(contentsOfURL: sound_data, error: nil)
audioPlayer.play()
}

819:デフォルトの名無しさん (ワッチョイ cf3c-S0So)
17/02/11 21:53:00.81 oskBDXOt0.net
みんな親切にありがとう
色々と調べたらAVFoundationのAVAudioPlayer使うことになりそうだ
>>800>>801のコードにボタンをACTIONでつなげれば良さそうだね

820:デフォルトの名無しさん (ワッチョイ f23c-DoU+)
17/02/11 22:00:59.47 ria0yk5C0.net
>>801
AVAudioPlayerのインスタンスを保持しておかないと音なる前に回収される

>>802
停止操作とか必要なくただビープ音的に鳴らしたいだけならSystem Sound Serviceってのもある
URLリンク(developer.apple.com)

821:デフォルトの名無しさん (ワッチョイ 935b-3OfB)
17/02/12 10:06:48.35 jCqP/Xy60.net
>>803
こんな感じね。

let soundIdRing:SystemSoundID = 1000 // new-mail.caf
AudioServicesPlaySystemSound(soundIdRing)

URLリンク(iphonedevwiki.net)

822:デフォルトの名無しさん (ワッチョイ 52a6-yzHa)
17/02/12 17:36:05.74 wbmA90a/0.net
AffineTransformのrotateが間違ってるっぽいんだけど
もしバグなら報告したいけどやり方わからん

let scale: CGFloat = 2
let angle: CGFloat = .pi / 4

var affine = AffineTransform(scale: scale)
affine.rotate(byRadians: angle)
print(affine)
// Prints "{m11:0.707106781186548,
m12:0.707106781186547,
m21:-0.707106781186547,
m22:0.707106781186548,
tX:0.0,
tY:0.0}"

var affine2 = CGAffineTransform(scaleX: scale, y: scale)
affine2 = affine2.rotated(by: angle)
print(affine2)
// Print "CGAffineTransform(a: 1.4142135623731,
b: 1.41421356237309,
c: -1.41421356237309,
d: 1.4142135623731,
tx: 0.0,
ty: 0.0)"

823:デフォルトの名無しさん (アウアウエー Sa4a-C9ZD)
17/02/12 17:44:34.25 al1G+i0ka.net
AffineTransformって、どっから持ってきたの?

824:デフォルトの名無しさん (スップ Sd52-a31+)
17/02/12 18:33:13.51 Okkscphrd.net
>>805
なんで仕様も知らないのに、バグだって解るの?

825:デフォルトの名無しさん (ワッチョイ 935b-3OfB)
17/02/12 18:38:31.94 jCqP/Xy60.net
>>805
var affine = AffineTransform(scale: scale)
affine.append(AffineTransform(rotationByRadians: angle))
print(affine)

826:デフォルトの名無しさん (ワッチョイ f23c-DoU+)
17/02/12 18:39:48.46 ashgYgUc0.net
>>805
バグってるぽいね
ここのReporting Bugsのところ見て報告するといいんじゃないかな
URLリンク(swift.org)

どう見ても設定値(m11とか)を読んでない
URLリンク(github.com)

827:デフォルトの名無しさん (ワッチョイ 935b-3OfB)
17/02/12 18:39:59.85 jCqP/Xy60.net
>>805
ところで、API Referenceをどうやって引いてる?
API Referenceなんて見ずに、blogの情報とか、漁ってる?

828:デフォルトの名無しさん (ワッチョイ f23c-DoU+)
17/02/12 18:43:54.40 ashgYgUc0.net
NSAffineTransformとInterchangableって言ってるのにこうやったら結果変わるんだからバグでしょ

var affine = NSAffineTransform(transform: AffineTransform(scale: scale))
affine.rotate(byRadians: angle)

829:デフォルトの名無しさん (ワッチョイ 935b-3OfB)
17/02/12 18:45:05.05 jCqP/Xy60.net
俺、夕飯の準備するわぁ

830:デフォルトの名無しさん (ワッチョイ 935b-3OfB)
17/02/12 19:02:44.16 jCqP/Xy60.net
俺もbugに思えてきた。

831:デフォルトの名無しさん (ワッチョイ 9b33-C9ZD)
17/02/12 19:45:50.10 s4ykSwHK0.net
殺虫剤はよ

832:デフォルトの名無しさん (ワッチョイ b285-cGUq)
17/02/12 20:06:38.87 /n7GcIvt0.net
mp3とかの曲の再生で
再生速度を上げたりさげたりするのは
AVAudioPlayerでできるの?

833:デフォルトの名無しさん (ワッチョイ 935b-3OfB)
17/02/12 20:27:22.43 jCqP/Xy60.net
URLリンク(kyoshiaki.hatenablog.com)

ここ見ると
swiftコマンドを作るのに2hr位かかるって!ただし、プロセスを1に限定してメモリ不足を回避しているので、プロセスを4にする事で高速化できるかも。多分素直に4倍高速になる。

834:デフォルトの名無しさん (ワッチョイ 935b-3OfB)
17/02/12 20:28:28.95 jCqP/Xy60.net
>>815
var rate: Float
The audio player’s playback rate.

ってかまじAPI Referenceみないの?

835:デフォルトの名無しさん (ワッチョイ 935b-3OfB)
17/02/12 20:55:59.50 jCqP/Xy60.net
Swift実践入門 ─ 直感的な文法と安全性を兼ね備えた言語 (WEB+DB PRESS plus)

この本超気になってる。24日(金)までデカイ本屋に行けそうに無い。
田舎住まいなもんで。

どうしよう、中身見ないでAmazonで注文してみっか!

836:デフォルトの名無しさん (ワッチョイ 52a6-yzHa)
17/02/12 21:30:20.51 wbmA90a/0.net
申し訳ないAffineTransformはiOSにはなかった
macOSの方です
バグレポートしようとしたらJiraってやつのログイン画面が出てきて詰んだ

837:デフォルトの名無しさん (ワッチョイ 52a6-yzHa)
17/02/12 21:39:30.82 wbmA90a/0.net
>>810
基本的にはXCodeでクラス名をコマンドキー押しながらクリックしてる
それでわからなかったらgoogleしてる

838:デフォルトの名無しさん (ワッチョイ f23c-DoU+)
17/02/12 22:11:58.80 ashgYgUc0.net
>>819
アカウント作成してバグレポートを上げようよ
結構クリティカルだと思うし世界中のOSX開発者が助かるよ
ついでにテストコードも追加か修正してプルリクエスト上げるといいと思う

affinetransformで検索してもissueは上がってない
URLリンク(bugs.swift.org)

Openradarに似たようなのあったけど中身ちょっと違う
URLリンク(openradar.appspot.com)

839:デフォルトの名無しさん (ワッチョイ 52a6-yzHa)
17/02/12 22:38:10.12 wbmA90a/0.net
>>820
頑張ってみる
本当はgithubでプルリクエストしたかったけどswiftコマンドつくるの失敗に終わった
URLリンク(swift.org)にWifi(itscom)からだとアクセスできない助けて
携帯からなら繋がる

840:デフォルトの名無しさん (ワッチョイ f23c-DoU+)
17/02/12 23:24:37.94 ashgYgUc0.net
swiftコマンドとかはすでにあるやつ(Xcodeの最新版の)を使えばいいんでは?
↓swift-corelibs-foundationをクローンしてFoundationだけビルドしてる例
URLリンク(dev.iachieved.it)

841:デフォルトの名無しさん (ワッチョイ 52a6-yzHa)
17/02/12 23:42:42.26 wbmA90a/0.net
>>823
おーーそんな方法があるのか
ありがとうございます

842:デフォルトの名無しさん (ワッチョイ 932b-yzHa)
17/02/13 09:03:20.14 s7YAQc1O0.net
NSとCGで挙動が違うのは正規仕様なんでは?
Class NSAffineTransform と Struct AffineTransform がInterchangableなのであって
Class NSAffineTransform と Class CGAffineTransform が互換あるとは言ってないような...
非publicなメンバの値まで一致させないといけない理由はないと思うんだ

843:デフォルトの名無しさん (ワッチョイ d3c9-C9ZD)
17/02/13 09:32:07.22 2bWgE/rs0.net
>>825
仕様が曖昧なので、bugっぽい動作をしている。仕様変更と同時に、rotateメソッドの実装の変更をrequestした方が良いと思う。
Struct AffineTransformのfunc rotate(byRadians: CGFloat)メソッドの仕様は、

Mutates an affine transformation matrix from a rotation value (angle α in radians).

変換行列を書き換えるってのが仕様なんだけど、その書き換え方については言及していない。

affineオブジェクトには行列Sが入っているとする。rotateメソッドでの書き換え方はは2通りある。
1. 行列Sx行列Rで書き換える
2. 行列Sは捨てて、新規に行列Rで書き換える

rotateの動作は2.なんだけど、1.が期待する動作だ。2.の動作が欲しければコンストラクタinit:rotateByRadiansを使えばいいワケだから。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch