トップページ⇒tech
1002コメント383KB

Swift part9 [無断転載禁止]©5ch.io

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 8b3c-/6Y/)2016/10/18(火) 11:34:44.16ID:oLo879ze0
WWDC2014で発表されたAppleの新言語Swiftについて語りましょう

関連スレ

プログラミング言語Swift 3
http://potato.2ch.net/test/read.cgi/mac/1408762479/

[SDK]iPhoneアプリ開発初心者質問箱47[touch][iPad]
http://potato.2ch.net/test/read.cgi/mac/1470902093/

Xcode part14
http://potato.2ch.net/test/read.cgi/mac/1476190499/

Swiftアンチスレ part1
http://echo.2ch.net/test/read.cgi/tech/1458491343/

前スレ
Swift part8
http://echo.2ch.net/test/read.cgi/tech/1463149806/
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
0554デフォルトの名無しさん (ワッチョイ 92e5-kkJw)2017/01/13(金) 18:32:25.12ID:cenlIzEl0
>>553
ありがとう😊
0555デフォルトの名無しさん (ワッチョイ d35b-lDPz)2017/01/13(金) 19:41:22.91ID:6sCHka4P0
>>552
delegateの話は無しなのかぁ。
まあ、UIKit、AppKitの話だからなぁ。
0556デフォルトの名無しさん (ワッチョイ be5b-GRi3)2017/01/14(土) 02:00:38.21ID:zbDc0ypE0
AppleがSwiftを切っても使い続けたいと思うならまともな言語といえるのだろう
0557デフォルトの名無しさん (ブーイモ MM8b-0NVw)2017/01/17(火) 12:02:14.54ID:cEkG7JbvM
テスラのファームウェアがSwift製になるのか
ますます日本人のトヨタ離れが加速するな
0558デフォルトの名無しさん (JP 0Hf2-dHfL)2017/01/17(火) 15:24:26.60ID:BOj3HsKUH
で、Swift無くなるの?
0559デフォルトの名無しさん (ササクッテロラ Sp37-gjPF)2017/01/17(火) 16:31:46.31ID:eAAsiKtXp
swiftってファームウェアが書けるほど低レイヤーで動けるのかいな
LinuxないしmacOS, iOS上のソフトウェアに留まりそう
まぁそれでもテスラ上の開発がswiftになるならこれほど胸熱なニュースはswift史上にないな(そうなるとは思ってない
0560デフォルトの名無しさん (ワッチョイ 0353-0NVw)2017/01/17(火) 17:18:09.57ID:KCosYzOz0
いや、CとSwiftの併用でいくと思う
というかビットバイトレベルの操作はCが一等書きやすいのは今後も変わらん
Swift登場後はポストCはどの言語かという議論はナンセンスだと思うわ
0561デフォルトの名無しさん (ワッチョイ 0353-0NVw)2017/01/17(火) 17:47:17.45ID:KCosYzOz0
実のところSwiftに熱くなれるのはiOSシェア50%強の日本だけ
日本にいると気づきにくいが他の国ではそもそもSwiftを走らせる機会に乏しいのだ
サーバーサイドでもGo、node.jsやJavaを差し置いてSwiftを採用するメリットは現状乏しい
ラトナーは日本人のオタクばっかりが飛びついてバカッターであることないこと吹き回ってる現状を前に
未来への展望が見えなくなってしまったのかもしれない

もしかしたらSwiftが流行るかどうかは日本人次第と言えるかもしれない
Swiftはラトナーから日本人への置き土産だったのだ
0562デフォルトの名無しさん (ワッチョイ 0353-0NVw)2017/01/17(火) 17:53:53.67ID:KCosYzOz0
バカッターで本質的でも建設的でもないことで熱くなっている日本人を前にして
ラトナー「やべえ一番面倒なお客さんに好かれちまった・・・この言語もうだめだわ」
となったに違いない。俺ラトナーの気持ちよくわかるわ
0563デフォルトの名無しさん (ワッチョイ d3c9-pk1x)2017/01/17(火) 18:00:12.82ID:1PLMnPDO0
>>561
飽きるのも速いからな
0564デフォルトの名無しさん (ワッチョイ f34e-TjL7)2017/01/17(火) 18:01:11.31ID:1+zZwnvK0
>>562
一瞬、「置き土産」をポジティブに捉えてるのかと思ったよ
0565デフォルトの名無しさん (ワッチョイ 0353-0NVw)2017/01/17(火) 18:22:17.10ID:KCosYzOz0
>>564
いやまあ適当におもしろおかしく書いただけなんで俺の意思は上のレスのどこにもないよ
0566デフォルトの名無しさん (スッップ Sdd2-0Plu)2017/01/17(火) 18:57:54.94ID:N7dBiTg5d
>>560
ビット、バイトの操作はアセンブリ言語の方が楽。
0567デフォルトの名無しさん (ワッチョイ 0353-0NVw)2017/01/17(火) 19:02:14.58ID:KCosYzOz0
>>566
楽が何を指してるのかわからんがアセンブリでARMからx86まで対応したコード書く気ですか
0568デフォルトの名無しさん (ブーイモ MM8b-0NVw)2017/01/17(火) 19:16:55.24ID:cEkG7JbvM
IBMは動揺しただろうか
軽く社運賭けてそうだったもんな
0569デフォルトの名無しさん (ワッチョイ 72c9-lDPz)2017/01/17(火) 19:45:51.46ID:94EBDj3G0
そもそも発表後はラトナーそんなにコード書いてない
メーリスでも発言が頻繁だったわけでもない
Swiftはとうにラトナーの手を離れて歩きだしてる
0570デフォルトの名無しさん (ワッチョイ f38f-JEwG)2017/01/17(火) 20:39:45.87ID:L9ZJiwd40
rustの真似してARCやめようとしてるのもテスラで動かすための布石だったりして
0571デフォルトの名無しさん (ワッチョイ 12cf-kkJw)2017/01/17(火) 21:00:56.60ID:cY3pxmYi0
ていうか、単にcocoa系APIは専用の呼び出しサポートして終わり、で良かった気がするんだけどねぇ。
それなら、よそのAPI取り込み選択肢があったのにねぇ。
0572デフォルトの名無しさん (スプッッ Sdf2-k0Ff)2017/01/17(火) 21:29:33.05ID:diZtCuN9d
流れぶったぎってすまないが、演算子で???とか!!ってあったっけ?サーチエンジンで検索できないんだよね
0573デフォルトの名無しさん (ワッチョイ 72c9-lDPz)2017/01/17(火) 22:46:01.20ID:94EBDj3G0
無いっしょ
0574デフォルトの名無しさん (スプッッ Sdf2-k0Ff)2017/01/18(水) 11:32:43.43ID:QZC6aztod
どっかで見た気がしてた、ありがとう
0575デフォルトの名無しさん (ワッチョイ 573c-dHfL)2017/01/18(水) 14:04:31.66ID:mYaS/Vd70
演算子では無いけど書けるかどうかなら一応可能
実用コードで見掛けることは無いだろうけど

let a = Optional(Optional(Optional(0)))
let aa = a???.hashValue

let b = Optional(Optional(0))
let bb = b!!
0576デフォルトの名無しさん (ササクッテロリ Sp37-gjPF)2017/01/18(水) 18:04:04.22ID:I9cdn/V3p
rustの真似事は無理じゃないかなぁ
rustスレに遊びに来た荒し、数時間で挫折したぞ
borrow checkerはARCより死ぬほど扱いが難しい
その割りにARCと実動作に大差ないからメリットが少ないって冷静に判断されそう
0577デフォルトの名無しさん (ワッチョイ d35b-lDPz)2017/01/18(水) 21:45:54.00ID:LJhKuLVS0
>>572
Swift Standard Library -> Swift Standard Library Operators
0578デフォルトの名無しさん (ワッチョイ f642-dHfL)2017/01/18(水) 21:46:51.93ID:fhQVy3CG0
>>576
それは言語として威張れるところか?w
0579デフォルトの名無しさん (ワッチョイ f34e-TjL7)2017/01/18(水) 21:53:24.02ID:B+OX1k7v0
borrowチラっと見たけどややこしいな
ownershipで考えるからややこしいんだろ
reference countのARCのがシンプル
0580デフォルトの名無しさん (ササクッテロリ Sp37-gjPF)2017/01/18(水) 22:18:00.91ID:I9cdn/V3p
>>578
一応、「nilsafeだから安全(笑)」とswiftを馬鹿に出来るくらい不正ポインタアクセスに対して安全だから、、、
その代償のコーディング難易度がくっそ高いから日曜プログラマがちょっと遊びでには向かない
まぁ、業務にもその難易度のせいで上流行程へ採用提案しづらいんだけど

要は、日曜プログラマに愛されて、アポー信者の上流行程を騙しやすいswift最強ってこった
0581デフォルトの名無しさん (ワッチョイ 72c9-lDPz)2017/01/18(水) 22:56:42.20ID:g+H+g1Pr0
RustでもOption使うだろ
0582デフォルトの名無しさん (ワッチョイ c33c-3qL8)2017/01/19(木) 07:59:17.73ID:FKxmZ7fp0
Swiftのメモリ管理 ≒ C++のshared_ptr/weak_ptr
Rustのメモリ管理 ≒ C++のauto_ptr(暗黙move, unique_ptrの先代)

Rustのborrowingはauto_ptr::getとほぼ同じ
ただし解放されたものを参照しないようlifetimeの手厚いサポートがある

ARCの方がコーディングは楽だろうけど
Rust方式は渡したものを保持して遅延使用するのか
関数から戻った時点で使い終わってるのかを
言語レベルで扱えたりするから一長一短ではある

まぁSwiftにもクロージャに関しては@escapingがあるけど
0583デフォルトの名無しさん (ワッチョイ ffc9-mu6I)2017/01/19(木) 20:32:11.50ID:VasCiZ4n0
Swift/ObjCのARCはshared_ptr/weak_ptrと同じ
ただ、SwiftはKotlinのoptional, Rustのif letを言語仕様でパクってあってコーディングが楽

この部分だけObjCにバックポートしたら便利なんじゃね?とふと思った
__nullable, __nonnullとか微妙なキーワードによるバックポートは正直使いづらい
0584デフォルトの名無しさん (アウアウオー Sadf-WaXM)2017/01/19(木) 22:19:36.62ID:w+bE5wHza
そうですね
0585デフォルトの名無しさん (オイコラミネオ MMff-Taza)2017/01/20(金) 15:40:14.18ID:ZOjl9uXaM
型推論をプログラミング知識が乏しい人に説明するなら、どんな隠喩がいいと思う?
0586デフォルトの名無しさん (アウアウオー Sadf-WaXM)2017/01/20(金) 16:00:12.37ID:is3Fha3pa
アヒルみたいな顔してお尻フリフリ歩いてグワッ、グワッて鳴く鳥がいたら、もうそれアヒルってことでいいよね
って感じでいいんじゃね
0587デフォルトの名無しさん (JP 0H87-Taza)2017/01/20(金) 16:35:51.58ID:6bMM3T6GH
うわっ!これガチョウだ!!
0588デフォルトの名無しさん (アウアウオー Sadf-WaXM)2017/01/20(金) 17:08:41.66ID:is3Fha3pa
などと、コンパイルエラーが出たら明示的に宣言してね
ということで
0589デフォルトの名無しさん (スップ Sd1f-ddg/)2017/01/20(金) 18:43:31.96ID:2Wi9HN+wd
>>585
男か女か解らない人がいるんだけれど、喉仏が出ているから、男って事で。


みたいな?
0590デフォルトの名無しさん (ササクッテロリ Sp87-/mpU)2017/01/20(金) 19:05:32.26ID:4nNA4c16p
「おまじない」が古くから由緒ある陰語

実際問題、プログラミング知識が乏しいと
型推論と型宣言と動的型を区別できないから説明省いて良いと思う
0591デフォルトの名無しさん (ワッチョイ 738f-ILNu)2017/01/20(金) 22:51:19.05ID:/kNqqxub0
いやいやそれくらいコンパイラ側が自動で型を推測してよってツッコミを入れていたところが解決した
0592デフォルトの名無しさん (アウアウオー Sadf-WaXM)2017/01/20(金) 23:13:59.78ID:sVl+H8Xfa
それは良かった
0593デフォルトの名無しさん (アウアウオー Sadf-WaXM)2017/01/20(金) 23:59:07.88ID:sVl+H8Xfa
a = b = c = 0
って感じで同じ型の変数に値を一気に代入できないのは不便だよね
0594デフォルトの名無しさん (ササクッテロリ Sp87-/mpU)2017/01/21(土) 01:50:38.98ID:d82h9KNNp
そうですね
0595デフォルトの名無しさん (ワッチョイ 6f5b-JNK/)2017/01/21(土) 01:51:05.02ID:W/zpHkC+0
だってSwiftだもの
0596デフォルトの名無しさん (ササクッテロロ Sp87-UhX6)2017/01/21(土) 02:08:12.56ID:wL4zqwoRp
みつを来てんね
0597デフォルトの名無しさん (オッペケ Sr87-+PXi)2017/01/21(土) 19:37:18.34ID:aueqPNmbr
>>582
つまりc++が最強?
0598デフォルトの名無しさん (ワッチョイ bf8c-GzBV)2017/01/23(月) 21:45:03.95ID:RV5yVqC70
初見なんだけどココ、NewB的な質問もOkなトコロ?
0599デフォルトの名無しさん (ワッチョイ bf8c-GzBV)2017/01/23(月) 21:59:18.58ID:RV5yVqC70
>>598だけど返事待つのもあれだし、質問するわ。ちょっと説明しづらいんだけど
例えばビューのカスタムクラス作って、そこのポップアップボタンとかのアイテムにセレクターつけるとするじゃん。
そんでそのクラスのインスタンスをペアレントのビューに複数おいてどれかのアイテムクリックすると、
別のインスタンスのセレクタが呼ばれちゃわね?二つ目のインスタンスのボタン押したのに、一つ目に反映されたりする。

このカスタムクラス複数インスタンス化においてのNotificationとか、selectorとかで困ってんの、どうやって回避する?
0600デフォルトの名無しさん (アウアウオー Sadf-WaXM)2017/01/23(月) 22:05:37.88ID:WrhQGC6sa
ちょっと言ってる意味がわからないけど
俺のエスパー能力が正確なら、Outlet Collectionでググるといいかもしれない
0601デフォルトの名無しさん (アウアウオー Sadf-WaXM)2017/01/23(月) 22:06:59.56ID:WrhQGC6sa
いやなんか違うような気がするな
やっぱエスパーさんの登場を待とう
0602デフォルトの名無しさん (ワッチョイ f35b-jh1Y)2017/01/23(月) 22:11:15.46ID:Llx+8S3H0
>>599
俺も何いってるのか?
さっぱりだわぁ
0603デフォルトの名無しさん (ワッチョイ bf8c-GzBV)2017/01/23(月) 22:26:13.92ID:RV5yVqC70
すげーリプはえーやばい。
ググってくるわーthx
0604デフォルトの名無しさん (ワッチョイ 33a1-U6eW)2017/01/23(月) 22:26:58.66ID:sPzCf4bI0
Notificationの、selecterとnameちゃんと使い分けてる?
0605デフォルトの名無しさん (ワッチョイ c33c-3qL8)2017/01/23(月) 22:29:39.75ID:Ws+iSkNs0
>>599
UIViewControllerでなくUIViewを継承
0606デフォルトの名無しさん (ワッチョイ bf8c-GzBV)2017/01/23(月) 22:35:00.65ID:RV5yVqC70
>>604
NSMenuItemからいくと、postじゃなくてaction限定になってるんじゃないかな?限定的でスマソンだけど

>>605
OSXでNSViewを継承
0607デフォルトの名無しさん (ワッチョイ bf8c-GzBV)2017/01/23(月) 22:44:47.72ID:RV5yVqC70
>>604
あとNameもインスタンスだと同じになって別のインスタンスが呼ばれちゃう。
でもこれは登録する時にNameにインデックスとか何らかIDつけると回避できそうな気がするけど、メニューアイテムだと

menu?.addItem(NSMenuItem.init(title: name , action: #selector(selected(_:)), keyEquivalent: ""))

みたいな感じで付け入る隙がないんだ
0608デフォルトの名無しさん (ワッチョイ 6f5b-JNK/)2017/01/23(月) 22:54:40.36ID:wkYluZkM0
Swiftの字面の汚さは慣れないなやっぱり
0609デフォルトの名無しさん (ワッチョイ c33c-ddg/)2017/01/23(月) 23:00:43.39ID:d7Gq4/N70
>>599
「ポップアップボタンとか」の「とか」は、「ポップアップボタン」以外の何?

そもそもAppleは、ポップアップボタンなんてものは提供していないがな。
それにiOSでは、クリックなんかはできない。

HumanInterfaceGuidelinesを読み直して出直した方が良いな。
0610デフォルトの名無しさん (ワッチョイ 9339-u5as)2017/01/24(火) 00:55:51.35ID:exkLo0yv0
文字とかって Character と CChar とあるみたいだけど、
こういうことしたい時はどうすればいいんでしょう

Cで

for(i = 'a'; i <= 'z'; i++){
putchar(i & 0x5f);
}
putchar('\n')

みたいなのを swiftで書く場合って…

for i in ???...??? {
もうわからん
}
0611デフォルトの名無しさん (アウアウオー Sadf-WaXM)2017/01/24(火) 01:24:22.63ID:6XEtipUUa
なんでそんなことしたいのか知らんけど
くんな感じ?

for ch in "a".utf8.first!..<"z".utf8.first! {
print(Character(UnicodeScalar(ch & 0x5f)))
}

もっとスマートな書き方があるかも知らん
0612デフォルトの名無しさん (ワッチョイ bf8c-GzBV)2017/01/24(火) 01:33:52.81ID:7WmLdbGx0
>>610

let str = "abcdefghijklmnopqrstuvwxyz"

for c in str.characters{
print(c)
}

がんばれ
0613デフォルトの名無しさん (アウアウオー Sadf-WaXM)2017/01/24(火) 01:43:19.82ID:6XEtipUUa
>>612
それ文字列の中を順に表示してるだけじゃん
0614デフォルトの名無しさん (ワッチョイ bf8c-GzBV)2017/01/24(火) 01:56:29.31ID:7WmLdbGx0
>>612
これ何で大文字になんの?
0615デフォルトの名無しさん (ワッチョイ bf8c-GzBV)2017/01/24(火) 01:57:25.69ID:7WmLdbGx0
>>614
>>611の間違い
0616デフォルトの名無しさん (アウアウオー Sadf-WaXM)2017/01/24(火) 02:07:07.07ID:6XEtipUUa
それはAsciiコードがそうなってるから...
0617デフォルトの名無しさん (アウアウオー Sadf-WaXM)2017/01/24(火) 02:10:03.40ID:6XEtipUUa
大文字にするだけならこっちの方がいいか

for val in UnicodeScalar("a").value...UnicodeScalar("z").value
{
print(String(format: "%c", val).uppercased())
}
0618デフォルトの名無しさん (スッップ Sd1f-JNK/)2017/01/24(火) 02:22:36.10ID:kY6N+f51d
>>611
クッソ読みにくいな
さすがSwift()だわ
0619デフォルトの名無しさん (ワッチョイ c33c-ddg/)2017/01/24(火) 05:59:43.55ID:odFyaWZN0
>>616
何だ?Asciiコードって。

SUICAカード
電球の球
頭痛が痛い
地震が揺れた
0620デフォルトの名無しさん (ワッチョイ 9339-u5as)2017/01/24(火) 07:47:42.37ID:exkLo0yv0
ありがとう

>>611
ワイの求めていたものに近い

見てたら意味的には
>>617のがよさげ

別に小文字を大文字にしたいわけじゃなくて
文字コードを数値で扱いたく
かつ数値を文字にしたかった

例えば大量のテストデータを自動生成するとか
発想が Cなので、そういうやり方しか思いつかないんだけど
手段にたどりつけないで試行錯誤してます
0621デフォルトの名無しさん (ワッチョイ 9339-u5as)2017/01/24(火) 07:50:49.58ID:exkLo0yv0
>>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' って書けないんだよ
それぐらいやらせてくれよ
0622デフォルトの名無しさん (ササクッテロリ Sp87-/mpU)2017/01/24(火) 10:19:40.46ID:PbjuVM+3p
aからzが子文字のみの昇順で並ぶ保証がないから
万が一、将来AaBbC...yZzって並ぶ文字コードが世界標準になったら
'a'...'z'が書ける言語仕様にしてたらどうすればいいか分かんないじゃん

これは極端な例だけど、要はそういう不意の事象に耐える意識高い言語仕様にswiftはなってる
0623デフォルトの名無しさん (アウアウオー Sadf-WaXM)2017/01/24(火) 10:32:22.93ID:8WMehL2Va
いやもう文字コード決まってんじゃんw
今更文字コード変えられたら、どっちみちコンパイルし直しになるし
どんだけ既存のプログラムに影響出るんだよw
0624デフォルトの名無しさん (ワッチョイ ff4c-Taza)2017/01/24(火) 10:52:16.06ID:bcJOEpSP0
ASCII知らないのか
0625デフォルトの名無しさん (ワッチョイ c33c-3qL8)2017/01/24(火) 11:01:02.71ID:HBr+KooL0
>>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))
}
0626デフォルトの名無しさん (ササクッテロリ Sp87-/mpU)2017/01/24(火) 11:16:48.70ID:PbjuVM+3p
ソースファイルの文字コードとランタイム内の文字コードは別に考えろよ
ソースファイルの話ならjavac -encodingみたいに対応すればいい
ランタイム内はそれが変動出来るようにString.utf8やUnicodeScalarがある

ソースファイルの文字コードに影響されるってC言語かよw
0627デフォルトの名無しさん (ワッチョイ 335b-wAZW)2017/01/24(火) 12:08:53.72ID:gy8Md2CU0
文字列は魔境
0628デフォルトの名無しさん (アウアウオー Sadf-WaXM)2017/01/24(火) 12:14:47.00ID:8WMehL2Va
ソースファイルにしろランタイムにしろいきなり文字コード体系が変わってもらっちゃ
どんな言語だって困るだろ
文字コードの大小に依存してるコードなんてごまんとあるぞ
0629デフォルトの名無しさん (ワッチョイ c33c-M+yL)2017/01/24(火) 17:34:40.36ID:+WwPKdrl0
日本語が不自由だとか勘弁してくれよ。
https://kotobank.jp/word/%E3%81%A8%E3%81%8B-582055#E3.83.87.E3.82.B8.E3.82.BF.E3.83.AB.E5.A4.A7.E8.BE.9E.E6.B3.89
0630デフォルトの名無しさん (ワッチョイ 9339-u5as)2017/01/24(火) 19:57:41.91ID:exkLo0yv0
>>625
イイね

ただ大文字化したいというよりは
こういった基本的な処理を身に着けたい

今まで Cや Perlでやってたことが
swiftでもできたらなぁって感じ
できないと俺の寿命がストレスでマッハ
0631デフォルトの名無しさん (スッップ Sd1f-JNK/)2017/01/24(火) 21:29:28.75ID:6Rgy6vgTd
最近の言語だとPythonは読みやすくて覚えやすくていい文法してると思う
0632デフォルトの名無しさん (アウアウウー Sa67-WaXM)2017/01/24(火) 21:47:34.41ID:KTC1YGyNa
Pythonが最近の言語なわけないだろ
0633デフォルトの名無しさん (ワッチョイ a3d4-hfv1)2017/01/24(火) 22:31:37.74ID:GRF78Bhf0
Pythonは3で死んだ
0634デフォルトの名無しさん (ワッチョイ cf42-3qL8)2017/01/24(火) 22:35:46.17ID:L2GKKZjf0
死んだの?
0635デフォルトの名無しさん (ワッチョイ a3d4-hfv1)2017/01/24(火) 22:50:13.02ID:GRF78Bhf0
俺が死んだ
0636デフォルトの名無しさん (ワッチョイ ffc9-NwiU)2017/01/24(火) 23:30:23.92ID:Khh2743H0
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)!)
}
0637デフォルトの名無しさん (アウアウウー Sa67-WaXM)2017/01/25(水) 08:50:03.50ID:WD3nSRWWa
うっわめんどくせ
もうC言語でいいわ
0638デフォルトの名無しさん (エムゾネ FF1f-JNK/)2017/01/25(水) 09:06:42.63ID:Xv7wslg5F
>>637
基本読みにくいんだよなSwift
0639デフォルトの名無しさん (ワッチョイ c33c-3qL8)2017/01/25(水) 10:23:43.05ID:2+5m68360
>>636
結局リテラルがアレなんだよな
型指定しないとStringになるから俺はStrideable断念して引数使ったけど

シングルクォートのリテラルを言語仕様に入れなかった理由がよく分からない
0640デフォルトの名無しさん (ササクッテロリ Sp87-/mpU)2017/01/25(水) 10:39:46.63ID:+ZiK5CtYp
シングルクォート = UnicodeScalar で言語仕様切るとUnicodeに引っ張られるからでは
古い言語にならってASCIIを想像する人もいれば、今時ならUTF8だと想像する人もいるだろうし、フレームワークに合わせてUnicodeと言う人もいる
落とし所のない不毛な議論が目に見えるから、検討したけど削除した仕様な気がする
0641デフォルトの名無しさん (ワッチョイ c33c-3qL8)2017/01/25(水) 11:04:36.57ID:2+5m68360
でもStringとUnicodeScalarの間にCharacterが入ってるあたりは
既にUnicodeに盛大に引っ張られてる気もする

let c = Character("あ" + "゚")

まぁ何らかの検討はあったんだろうけど・・・
0642デフォルトの名無しさん (ワッチョイ 734c-JNK/)2017/01/25(水) 20:41:52.96ID:RfIl6u1t0
Swiftって確かに字数は少ないかもしれないが読みやすいかっていうと…
0643デフォルトの名無しさん (アウアウウー Sa67-WaXM)2017/01/25(水) 20:56:49.37ID:xQi6cekNa
じゃあ読みやすい言語ってどれだよ
0644デフォルトの名無しさん (スプッッ Sd1f-CBoF)2017/01/25(水) 21:09:38.61ID:d9MKwq+md
cobol
0645デフォルトの名無しさん (ワッチョイ 1342-3qL8)2017/01/25(水) 22:58:32.84ID:CYUx5EoW0
Java
Java
Java
Java
Java
0646デフォルトの名無しさん (ワッチョイ 1342-3qL8)2017/01/25(水) 23:07:52.05ID:CYUx5EoW0
とおもったけどC#
0647デフォルトの名無しさん (ワッチョイ 1342-3qL8)2017/01/25(水) 23:12:20.50ID:CYUx5EoW0
>>642
Swift字数おおくないか
ライブラリの名前がいちいち長ったらしいし
関数に引数の名前2つがデフォとかげんなりするし
try!に至ってはもう
0648デフォルトの名無しさん (ワッチョイ 0f4c-2P18)2017/01/26(木) 01:40:32.20ID:9A8WN5h/0
>>647
そ、そうね…
落ち着いて考えるとCで簡潔に書けることも長ったらしいし、それでいて読みにくい
Swiftって一体どこがいいんだろう…
0649デフォルトの名無しさん (ワッチョイ 2b10-Ve17)2017/01/26(木) 02:37:16.34ID:dAEo4WV40
引数名がない言語の方が見た目はシンプルだけど、特にtrue/falseだけのパラメータとかだと何してるかわかんないときがあって今となってはイラッとするな。
obj.doSomething(true, false, true)みたいなやつ
標準APIだとそういうのは良くないってわかってるのかあんまりないけど、誰かが適当に作ったライブラリだとそんなのがよく出てくる気がする
0650デフォルトの名無しさん (スッップ Sdca-2P18)2017/01/26(木) 03:07:53.57ID:26kSGCXVd
Swiftのラベル機能、アンダーバーってなんだよ
クソ過ぎやしないか?
Objective-Cのままでいいわまじで
0651デフォルトの名無しさん (ワッチョイ 833c-AZYz)2017/01/26(木) 07:35:18.87ID:8RDF259k0
トレーリングクロージャは良い点
それとクロージャ構文にプレフィックスが不要なところも
代わりにスコープブロックにdoが必要だけど2文字は許容範囲内
0652デフォルトの名無しさん (ワッチョイ 7e0d-Spol)2017/01/26(木) 08:13:25.19ID:O9H7zUJg0
>>641
Stringのメンバを見るとCharacterとUnicodeScalarは同列っぽいよ
どちらもUnicodeを内部エンコードに扱ってるからそれらはUnicode依存のフレームワークの様子だけど
同じ層にUTF8, UTF16もいるからいつかCharacterUTF8, UTF8Scalarみたいな構造体もできるかもなw
0653デフォルトの名無しさん (ワッチョイ 833c-AZYz)2017/01/26(木) 09:33:06.97ID:8RDF259k0
>>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)) //これは出来る
■ このスレッドは過去ログ倉庫に格納されています