Swiftスレat TECH
Swiftスレ - 暇つぶし2ch1:デフォルトの名無しさん
14/06/03 04:12:21.08 rEEU5ykv
WWDC2014で発表されたAppleの新言語Swiftについて語りましょう
URLリンク(developer.apple.com)

2:デフォルトの名無しさん
14/06/03 04:17:00.47 u4jrgx59
Apple Developer
URLリンク(developer.apple.com)

iBooks: The Swift Programming Language
URLリンク(itunes.apple.com)

3:デフォルトの名無しさん
14/06/03 04:34:50.18 0Yv/wN/p
Objective-Cのキモイ書き方から解放されるっていう意味では歓迎したい

4:デフォルトの名無しさん
14/06/03 04:38:13.14 RuKqYDTE
はえーよw

5:デフォルトの名無しさん
14/06/03 04:42:17.80 FE8l7XVP
javascriptみたいなやつか?

6:デフォルトの名無しさん
14/06/03 04:49:00.24 nzrdKQgu
発表してすぐにドキュメント公開とは、さすが
オープンソースベースのIDEすら未完成のどっかとは違うな

7:デフォルトの名無しさん
14/06/03 04:57:41.31 WOckUK4g
LLVMでScalaっぽいのつくりましたって感じか?
マカじゃないから羨ましい悔しい

8:デフォルトの名無しさん
14/06/03 05:25:48.47 FE8l7XVP
kindleで配布はよ
ていうかwebでドキュメント公開しないところがいやらしいな
マカー以外も興味ある人多いのに

9:デフォルトの名無しさん
14/06/03 05:38:35.52 rEEU5ykv
書籍の形にはなってないけどドキュメント

The Swift Programming Language
URLリンク(developer.apple.com)

Using Swift with Cocoa and Objective-C
URLリンク(developer.apple.com)

10:デフォルトの名無しさん
14/06/03 05:39:22.69 siem544m
やばい、ナウでヤングでいけてる、それで性能もいいというし。
これからiosとosxの開発賑わうのでは?
若者をapple自軍に呼び込む召喚魔法になりそう

11:デフォルトの名無しさん
14/06/03 05:49:11.67 QNehfQ3/
開発環境は?

12:デフォルトの名無しさん
14/06/03 05:59:22.34 rEEU5ykv
>>11
今のところbeta版のXcode 6がSwift対応らしい
URLリンク(developer.apple.com)

13:デフォルトの名無しさん
14/06/03 06:10:21.67 soMTJmL9
Objective-C と見た目が違い過ぎて笑う。
でも、流石にObjective-Cよりは遅いんじゃないか?

14:デフォルトの名無しさん
14/06/03 06:13:05.29 NLcqYubo
はやすぎワラタw

15:デフォルトの名無しさん
14/06/03 06:31:52.93 mG676Gbl
TypeScriptに似てるね。

16:デフォルトの名無しさん
14/06/03 06:32:47.09 rEEU5ykv
>>13
WWDCではObjective-Cより速いってグラフ出してたけどどうなんだろうな
もともとLLVMを念頭に置いて設計されてるから有利なのかも?

17:デフォルトの名無しさん
14/06/03 06:46:58.26 0v65KPbJ
Microsoftをパクってきたのか。

18:デフォルトの名無しさん
14/06/03 06:50:33.89 Fqc6zuT2
結局、なんの言語のパクリなのか、まとめといてくれ。

19:デフォルトの名無しさん
14/06/03 06:51:51.09 9Ltabfc6
早いよ。 マシンレベルでも最適化されるし言語仕様自体見ても高速に動きそう。

20:デフォルトの名無しさん
14/06/03 06:52:31.51 9Ltabfc6
>>18 Clangの発展形。

21:デフォルトの名無しさん
14/06/03 06:56:19.45 9Ltabfc6
新しいプログラミング言語 Swift
URLリンク(dev.classmethod.jp)

米アップル、iOSアプリの新開発言語にSwiftを導入
URLリンク(ggsoku.com)
米アップルは2日(現地時間)、iOS 8に新開発言語「Swift」を導入すると発表した。

Swiftは非常に軽快に動くことが特徴であり、Objective-CとC言語の中間に位置するようなイメージであるという。
コード体系はC言語を踏襲。
CocoaやCocoa Touchに対応することはもちろん、LLVMコンパイラを利用してビルドされる。

LLVM
URLリンク(ja.wikipedia.org)
LLVM とは、コンパイル時、リンク時、実行時などあらゆる時点でプログラムを最適化するよう設計された、任意のプログラミング言語に対応可能なコンパイラ基盤である。

LLVM は、JavaとJava VMの関係のように、まず仮想機械をターゲットとした中間コード(ビットコード)を生成し、その仮想機械向けコードを特定のマシンの機械語に変換する。

playgrounds を使うとインタラクティブに実行できる。
URLリンク(developer.apple.com)

22:デフォルトの名無しさん
14/06/03 07:12:38.78 iQXQSz/x
Enumもあるし、Genericsもあるのか。ますますTypeScriptに近いな

Swiftのprotocolっていうのは、TypeScriptのアンビエント宣言のことかな?

23:デフォルトの名無しさん
14/06/03 07:16:40.40 iQXQSz/x
タイプセーフ言語らしい。

Type Safety and Type Inference

Swift is a type safe language. A type safe language encourages you to be clear about
the types of values your code can work with. If part of your code expects a
String, you can’t pass it an Int by mistake.

Because Swift is type safe, it performs type checks when compiling your code and
flags any mismatched types as errors. This enables you to catch and
fix errors as early as possible in the development process.

24:デフォルトの名無しさん
14/06/03 08:32:34.25 tLJazyzK
1レスでマスターできるSwift言語入門
他言語のよせあつめだから、マスターするにはこれだけで十分w
(まあざっとしか見てないから間違ってたらすまん)

タイプセーフ言語。全般的に型ある。型キャストもある。
Generics搭載、アトリビュートあり

var(変数)とlet(定数)。変数・引数の定義は「名前: 型」の順番
文字列リテラル = よくある文字列クラス。文字列の中で変数展開や関数実行可能
for、for in、while、do while、if、swtchがある。
ループ系はラベルが使えてbreak、continueできるタイプ
switchは、caseにそこそこ色んなモノが使えてFallthroughキーワードでフォールするタイプ

関数はfuncで定義。デフォルト引数と名前付き引数が使える。
可変引数は...、inoutキーワードで引数で戻り値を返せる。クロージャある。アロー演算子もある。

タイプセーフEnum。おなじみのclassとstruct。thisはself。
(たぶん)単一実装継承。インターフェース(protocols)継承は複数可能
overrideキーワード、プロパティ(set、getキーワード)あり
コンストラクタ=init、デストラクタ=deinit。
自動リファレンスカウンタ方式。Weak Referencesあり
extensionで既存クラス拡張可能

例外、try-catchは不明(なし?)

25:デフォルトの名無しさん
14/06/03 08:39:53.35 SsmCsZ51
>>20
clang は言語か?

26:デフォルトの名無しさん
14/06/03 08:44:53.58 Tlzh3MoL
どっかで見たような言語だな。

27:デフォルトの名無しさん
14/06/03 08:46:43.13 va6vQ78Z
米アップル、iOSアプリの新開発言語にSwiftを導入
URLリンク(ggsoku.com)
米アップルは2日(現地時間)、iOS 8に新開発言語「Swift」を導入すると発表した。

Swiftは非常に軽快に動くことが特徴であり、Objective-CとC言語の中間に位置するようなイメージであるという。
コード体系はC言語を踏襲。
CocoaやCocoa Touchに対応することはもちろん、LLVMコンパイラを利用してビルドされる。

LLVM
URLリンク(ja.wikipedia.org)
LLVM とは、コンパイル時、リンク時、実行時などあらゆる時点でプログラムを最適化するよう設計された、任意のプログラミング言語に対応可能なコンパイラ基盤である。

LLVM は、JavaとJava VMの関係のように、まず仮想機械をターゲットとした中間コード(ビットコード)を生成し、その仮想機械向けコードを特定のマシンの機械語に変換する。

URLリンク(www.apple.com)

28:デフォルトの名無しさん
14/06/03 08:49:02.50 WvSy6YGV
>>24
例外無いの?
golangと同じかね

29:デフォルトの名無しさん
14/06/03 08:51:46.23 L+zlmaIc
               ノ      ゚.ノヽ  , /}      ...
            ,,イ`"     、-'   `;_' '    ..::::::::::::::...
   ,-、  _.._   (        (,(~ヽ'~     ..:::::::::::::::::::::::
 )'~  レー'  〉   ヽ       i`'}       .:::::::::::::::::::::::
 ~つ     '-ー、  i       | i'     ...:::::::::::::::::::::::
 /       <  /     。/   !  ......:::::::::::::::::::::::::    これは>>1乙じゃなくて
/         ~^´     /},-'' ,●::::::::::::::::::::::::::::::::::::
i、        ,i' _,,...,-‐-、/    i  ::::::::  .:::::::::::::
..ゝ        <,,-==、   ,,-,/      .:::::::::::            放射能がうんたら
 )       {~''~>`v-''`ー゙`'~       ..:::::::::                          ........::.
 {        レ_ノ            ..::::::::.                         ......:::::::::
ノ         ''           ..:::::::                        ...::.:...:::::::::
                     .:::::::::                     ...:......:::::::::::: .
                    .:::::::::::.        .....      ..  ..::::::::::::::::::::::::   :::.
                    ::::::::::::::::.::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. ::  ::..
                    .:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::    ::.
                    ::::::::::::::::: :::::::::::::::::::::::::::::: :::::
                          .::    ::.  :::

javascript ジェネレータはよ

30:デフォルトの名無しさん
14/06/03 08:55:32.79 va6vQ78Z
Welcome to Swift
URLリンク(developer.apple.com)

なんというか
一言で言うとダサい言語だな

31:デフォルトの名無しさん
14/06/03 08:56:46.37 Tlzh3MoL
>>28
ざっと見たけど見当たらなかった。
どこかに書いてあるのかねぇ。

32:デフォルトの名無しさん
14/06/03 08:57:48.29 uZjFICqp
これでObj-C食ったら皆得だな

33:デフォルトの名無しさん
14/06/03 08:58:42.76 Tlzh3MoL
Objective-Cはさすがに古臭すぎて
やりたくなかったが、これで消え去れば最高だね。
Swiftの方がJavaScriptに似てるからいいよ。

34:デフォルトの名無しさん
14/06/03 09:10:47.58 BwOFmS9H
NS遺伝子のジョブズ消えたから発表できたのか

35:デフォルトの名無しさん
14/06/03 09:30:10.40 9Ltabfc6
>>29 Javascript コンパイラは有るみたいだよ。
Emscripten is an LLVM to JavaScript compiler
URLリンク(github.com)

Swiftは次の様なコンパイル手順を取ってる。

Swift > Clang > LLVM byte code > マシン語
だからこんな感じになるのでは

Swift > Clang > LLVM byte code > Emscripten > Javascript

またLLVM中間語をわざわざコンパイルしなくてもそれ自体を実行できるJavascriptも存在しているようだから、そのままHTMLで使える。
LLVM.js - Badass JavaScript

Ruby, Python, Haskell, Java, D, PHP, Pure, Lua 等へもコンパイルできるらしい。
これは夢が広がるな。

36:デフォルトの名無しさん
14/06/03 09:35:53.62 t1I4ETzW
とりあえずつい最近Objective-Cの勉強始めた俺からするとめちゃくちゃ嬉しいwww
いやー早速rMBP15 rate 2013をXcode6とYosemiteにして遊んでるがめっちゃ簡単やん!TypeScriptやん!普段仕事はC#.NETやからめっさ馴染み深いシンタックスやん!!楽勝やんこれwww
ほんま如何にObjective-Cが難しかったかよくわかるわー、これでコーディングやなくてアプリの中身そのものにリソース注げるわー

37:デフォルトの名無しさん
14/06/03 09:40:34.97 Y/pEIVnr
今風のcって感じだな
大して目新しい機能はなさそうだけど、今さらobjcよりましと思う

38:デフォルトの名無しさん
14/06/03 09:45:10.46 t1I4ETzW
いやでもこれでXamarin必要なくなるwww
あのクソ高くてふざけた制限ばかりのサブスクリプションを契約しなくてよくなるwww
マジXamarinざまぁwww

39:デフォルトの名無しさん
14/06/03 09:46:10.84 va6vQ78Z
>>34
ジョブスなら歓迎するはず

40:デフォルトの名無しさん
14/06/03 09:50:18.20 9Ltabfc6
そもそもCocoaの遺伝子がLLVMに受け継がれそれが発展してSwiftが生まれたんだから正常進化形だな。

41:デフォルトの名無しさん
14/06/03 09:57:27.88 RuKqYDTE
誰が一番最初にSwiftインタプリタ実装するか勝負だ!

てかLLVMってことはemscriptenで簡単にJSにできたりするかな?
新たなaltJSの誕生である。

42:デフォルトの名無しさん
14/06/03 09:59:34.95 RuKqYDTE
>>38
C#が使えるってだけならXamarinいらんけど、
Xamarinの価値はAndroidやWindowsターゲットとも主にモデル等でコード共有出来るってとこじゃねえの?
俺使ったことないし知らんけど

43:デフォルトの名無しさん
14/06/03 10:00:18.19 d3S2ffsw
>>31 が言うように例外処理が書いてないなぁ
ゼロ割りは error だけど overflow operator 使えば 0 になるよ、とは書いてあるが
error になったらどうなるのかが書いてねぇ

44:デフォルトの名無しさん
14/06/03 10:03:39.83 S1JFtVB8
いまどきの新しめの言語機能を全部ぶち込んだような言語だな。
静的型の型推論、クラスベース、関数型の機能もある。クロージャもある。演算子オーバーロードもある。
そしてガベコレなし。GCは結局それほど良い物ではなかったと明らかになってきたな、最近は。
(いまだにヌルサクに動かないAndroid見れば分かる)
動的型に対する静的型の反撃、LLVMベースと
ある意味、この10年ほどの紆余曲折が全部込められてるw

システムレイヤからアプリケーションレイヤ、エンタープライズから3Dゲームまで幅広く対応できるんじゃね?
Appleオンリーのクローズドな言語ということを抜きにすれば神がかってるわw

とりあえずさー、JavaScriptとはかなり距離の遠い言語だぞw 共通項はC風構文ってくらいだ。
JavaScriptに似てるって言うやつのプロフ見るとほぼウェブ屋だから
やっぱウェブ屋は世界狭いんだなとか思ってるよ(´・ω・`)
もっとも、そういう人達も表向きJavaScriptに近い感覚で使えるというのはいいことだと思うね。

45:デフォルトの名無しさん
14/06/03 10:06:21.04 d3S2ffsw
ガベコレはまんまARCだろ

46:デフォルトの名無しさん
14/06/03 10:07:55.16 9Ltabfc6
>>41 行けると思うよ。 LLVMバイトコードは同じはずだから。

47:デフォルトの名無しさん
14/06/03 10:11:30.41 9Ltabfc6
>>46 まさかWindowsのJITで動いたりしてくれないよな。 あれもLLVMだから同じバイトコードを使ってるはず。

48:デフォルトの名無しさん
14/06/03 10:12:00.54 L+zlmaIc
>>41
もうあるだろ

49:デフォルトの名無しさん
14/06/03 10:13:41.37 t1I4ETzW
これIronSwiftとかゆってVSで新規プロジェクト作成からコーディングまでできたらうんこ漏らすわw
リモートでコンパイル・デプロイまでできたら最強やな、はよ

50:デフォルトの名無しさん
14/06/03 10:26:42.14 Fqc6zuT2
言語仕様の内側だけ見ると、あまりにも個性のない言語だね。

反面、外側を見ると、あのAppleのベンダー独自言語ってとこと、LLVM向けに設計ってとこが特徴的ではある。

51:デフォルトの名無しさん
14/06/03 10:48:29.11 4aJXakc5
lisp屋だけど、引き続きMacでは仕事がないか。

52:デフォルトの名無しさん
14/06/03 10:50:09.75 4aJXakc5
>>44
こんなスレたってるぞ
TypeScript(MS) VS Swift(Apple)
スレリンク(tech板)

1 デフォルトの名無しさん sage 2014/06/03(火) 10:20:03.13 ID:Tlzh3MoL
まあ、どちらもタイプセーフJavaScriptという
似たような言語なんだから仲良くしろや。

53:デフォルトの名無しさん
14/06/03 11:12:45.60 JVBQ3X9G
>>24
すげえ、もうだいたい書けそう
ちょっとした経験者ならすぐ作れそうだな
Web開発者を取り込みたい狙いもあるんかもしれん

54:デフォルトの名無しさん
14/06/03 11:13:03.13 L8tGCPp+
ベンダロックインされてなかったら、Script言語が軒並み死んでたな。
僕の考えた最強の言語を実体化させんなと。

55:デフォルトの名無しさん
14/06/03 11:26:50.98 RuKqYDTE
DartががっかりJavaもどきだったからな
期待している

56:デフォルトの名無しさん
14/06/03 11:28:40.77 u2cAAs6G
プログラミング言語swift公式ページ
URLリンク(swift-lang.org)

57:デフォルトの名無しさん
14/06/03 11:30:54.27 u2cAAs6G
swiftはiOSとMac OS X用のDSLである。
汎用言語ではないのでマカー以外は解散!

58:デフォルトの名無しさん
14/06/03 11:31:03.42 UTo3AZ7I
>>54
LLVM3.6で追加されるよ

59:デフォルトの名無しさん
14/06/03 11:31:55.13 RuKqYDTE
>>56
それ別のSwiftや

なんで名前被らせたんだろうな

60:デフォルトの名無しさん
14/06/03 11:41:30.74 ymd/m1MP
>>46 ID:9Ltabfc6
>>47 ID:9Ltabfc6

自演失敗か

61:デフォルトの名無しさん
14/06/03 11:44:01.73 92ySfIuy
今更IntにするならIntegerにしろよと思った

62:デフォルトの名無しさん
14/06/03 12:00:46.02 9AiAEfmm
IntにしたのはInt32とかUInt16とかもあるからじゃないか

63:デフォルトの名無しさん
14/06/03 12:10:44.59 aTPhR8I0
ARCもそだけど、GC(VM上でアプリが動く)というならWindowsPhoneやFireFoxOSはそんなに重くない。消費電力は知らん。

64:デフォルトの名無しさん
14/06/03 12:20:16.27 UatVHvvj
IntがIntegerじゃないのは、

JavaScriptに対して言われていた
「functionってなげーよwww」対策だろう。

長いって言うなら、funcって略すよ(Swift談)
Intergerも長いっていうんだろ? Intって略すよ。

たぶんこれ。

65:デフォルトの名無しさん
14/06/03 12:23:12.43 dLpXwHsH
TypeScriptでいいや

66:デフォルトの名無しさん
14/06/03 12:23:51.45 92ySfIuy
ああfuncって気付いてなかった
省略方針なのね

67:デフォルトの名無しさん
14/06/03 12:29:19.32 XlUvQuDj
Cの関数はそのまま呼べるの?

68:デフォルトの名無しさん
14/06/03 12:29:45.33 u2cAAs6G
functionだろうがfuncだろうが、関数を特別視すんなよ。
第一級関数なら変数と同じ扱いができるだろ。

69:デフォルトの名無しさん
14/06/03 12:30:37.08 RuKqYDTE
elsifじゃなくてよかったw

70:デフォルトの名無しさん
14/06/03 12:34:42.13 UatVHvvj
>>67
型が違うのだから呼べるわけがない。

>>68
> 第一級関数なら変数と同じ扱いができるだろ。

それは言語の発展と逆行した考え方だぞ。

命令もデータも区別がないというのがノイマン型コンピュータ。
コンピュータにとっては区別がなくていいが、
俺らは人間。人間にとってわかりやすいようすると
汎用的な概念から、どんどん特殊化する。

たとえばgoto一つあればできることが、
ループやbreakやcontinueや例外などに細かい概念に別れた。

71:デフォルトの名無しさん
14/06/03 12:36:05.68 sk2oOubr
例外処理はどうなってるんだ?

72:デフォルトの名無しさん
14/06/03 12:38:04.11 sk2oOubr
>>67
呼べる。

73:デフォルトの名無しさん
14/06/03 12:38:47.16 6F7AkFO6
初見で書いてあることが分かった気になれるところがいいね。
Objective-Cなんてさっぱりわからんかったから。

74:デフォルトの名無しさん
14/06/03 12:40:51.80 RuKqYDTE
Obj-Cから例外は使うなって方針だったから無くなるのはまぁ

75:デフォルトの名無しさん
14/06/03 12:42:17.52 XlUvQuDj
>>70 >>72
どっちだよw

76:デフォルトの名無しさん
14/06/03 12:44:34.65 /HreOboq
例外無いのなら嬉しいわ

77:デフォルトの名無しさん
14/06/03 12:45:44.32 9AiAEfmm
そのままでは呼べないが、Objective-Cのコードを介在すればC言語の関数を呼べる感じだな

78:デフォルトの名無しさん
14/06/03 12:50:30.70 9Ltabfc6
>>75 呼べるに決まってるだろ。 呼べなかったらOBJ-CとSwiftをどうやってマージして使うんだよ。

79:デフォルトの名無しさん
14/06/03 12:52:13.32 UatVHvvj
>>78
重要なのは「そのまま」かどうかだよ。

呼べるか呼べないかで言えば、JavaからC言語だって呼べるし
ラッパー作ればバッチファイルからだってC言語ライブラリ呼べるさw

80:デフォルトの名無しさん
14/06/03 13:01:40.44 XlUvQuDj
そりゃラッパーかませば呼べるのは分かるよ
swiftの関数内でそのまま例えばfreadとかできるのかが知りたいんだ

ランタイムは共通とか言ってた気がするから
ObjCで書いてコンパイルされたフレームワークで定義されたクラスやメソッドなんかは
構文が変わるだけで直接呼べるのだよね?

81:デフォルトの名無しさん
14/06/03 13:09:10.15 UatVHvvj
だからC言語の関数をそのまま実行するのは無理だって。

そもそもC言語の場合コンパイルしてしまえば、
バイナリから関数名も引数の順番も数もそういった情報はなくなってしまう。

それを補うのがC言語のヘッダファイルなわけで。

swiftがC言語のヘッダファイル(プリプロセッサ含む)を
解釈できるのでないかぎり、C言語の関数をそのまま実行するのは無理。

82:デフォルトの名無しさん
14/06/03 13:17:40.99 FnIPHf/f
関数宣言を与えただけで呼び出せるのなら、それはそのまま呼び出せるのと違わん

83:デフォルトの名無しさん
14/06/03 13:18:54.28 UatVHvvj
関数宣言を与えても呼び出せないので、
SwiftはC言語の関数をそのまま呼べないという話。

84:デフォルトの名無しさん
14/06/03 13:19:20.45 9AiAEfmm
C言語のコードをコンパイルしただけでは関数名は無くならないだろ

85:デフォルトの名無しさん
14/06/03 13:22:35.28 UatVHvvj
関数名は残っていたな失敬失敬w

でも引数の型や数といった情報は消えてしまう。
呼びだそうにも何を渡せばいいかわからない。

86:デフォルトの名無しさん
14/06/03 13:24:31.40 XlUvQuDj
基本的にはObjCと違って全部Swift内で完結せよというスタイルで
Cで書かれたライブラリを使いたいならObjCでラッパークラスを作るか
素直に全部ObjCで書けということなのかな

あまりお世話になることはなさそうかな

87:デフォルトの名無しさん
14/06/03 13:24:52.63 9AiAEfmm
Swiftの処理系はC言語形式のヘッダファイルを解釈できるみたいだよ?
ただそれによって利用可能になるのはObjCの形式で宣言したオブジェクトの定義だけみたいだが

88:デフォルトの名無しさん
14/06/03 13:28:06.12 XlUvQuDj
>>87
それって
URLリンク(developer.apple.com)
のどの章あたりに書いてあります?

89:デフォルトの名無しさん
14/06/03 13:28:09.49 x2ex+shd
>>87
ソース持ってきたら話を聞いてやってもいい。

90:デフォルトの名無しさん
14/06/03 13:29:17.83 sL9VpNby
C言語のヘッダファイルって、
ヘッダファイル専用の特殊形式ってわけでもなく、
Cコンパイラそのまま実装していなければ、
解釈不可能なはずだけどねぇw

91:デフォルトの名無しさん
14/06/03 13:30:24.57 9AiAEfmm
Obj-CとSwiftのコードの混在はこの辺だ
URLリンク(developer.apple.com)

92:デフォルトの名無しさん
14/06/03 13:30:54.21 RuKqYDTE
Using Swift with Cocoa and Objective-C
URLリンク(developer.apple.com)

93:デフォルトの名無しさん
14/06/03 13:32:25.88 Vd9fiKAu
「ObjCの形式で宣言したオブジェクト」って言ってる時点で、
それ普通のC言語のヘッダファイルじゃないからw

Objective-CはC言語じゃないんだよ。
C言語の範疇から外れたものしか扱えないって
言ってるようなもんじゃんかw

94:デフォルトの名無しさん
14/06/03 13:32:40.27 XlUvQuDj
>>91
なるほど、んじゃプロジェクトの特定のクラスだけObjCにするようなことは容易にできるわけだ

95:デフォルトの名無しさん
14/06/03 13:35:51.48 2DJZsrYR
ほうほう、紛らわしいことにC言語とは全く互換性がない
Objective-C用のヘッダファイルというものがあるわけか。

URLリンク(www.atmarkit.co.jp)
>
> クラスの宣言
>
>  クラスを作成するには、このクラスがどんなクラスなのかを宣言する必要があります。
> クラスの宣言はヘッダーファイル(.h)に書きます。そして、
> クラスを宣言するには@interfaceと@endを使用して以下のように書きます。

>  クラスやクラスに定義されるメソッドの実装は実装ファイル(.m)に記述します。
> クラスを実装するには@implementationと@endを使用して以下のように書きます。
>
> @implementation クラス名
> @end
>  @implementationと@endの間にクラスを実装していきます。従って、Personクラスでは以下のように記述します。
>
> @implementation Person
> @end

> また、実装ファイルには対応するヘッダーファイルを#importで読み込む必要があります。
> 以下のようにして、Person.hをインポートするようにしましょう。
>
> #import "Person.h"
> @implementation Person
> @end

96:デフォルトの名無しさん
14/06/03 13:36:04.76 RuKqYDTE
Obj-CはCの仕様を完全に含んでるよ

97:デフォルトの名無しさん
14/06/03 13:36:46.70 JVBQ3X9G
>>71
throw try catchがなくて??ってなってる

98:デフォルトの名無しさん
14/06/03 13:37:22.18 Nh2RM5Lo
>>94
> なるほど、んじゃプロジェクトの特定のクラスだけObjCにするようなことは容易にできるわけだ

できない。

というかそもそも、C言語にクラスというものが存在しない。

99:デフォルトの名無しさん
14/06/03 13:37:49.46 6F7AkFO6
JNIみたいなもんじゃね。
ある程度の安全性を考えたら、直よりもJNIみたいな方がいいと思うが。

100:デフォルトの名無しさん
14/06/03 13:39:10.62 Nh2RM5Lo
>>96
> Obj-CはCの仕様を完全に含んでるよ

で、Swiftで扱えるのは、C+αのα部分だけなんだろう?
それC言語の部分は扱えませんとw

101:デフォルトの名無しさん
14/06/03 13:40:00.04 XlUvQuDj
>>98
ObjCと書いたのだが、何故Cが出てくる?

102:デフォルトの名無しさん
14/06/03 13:41:30.08 Nh2RM5Lo
>>101
さっきから、SwiftでC言語ライブラリをそのまま呼べるか
(もちろんObjective-Cコード無しで)
という話をしているから。

103:デフォルトの名無しさん
14/06/03 13:42:54.08 XlUvQuDj
URLリンク(developer.apple.com)
これ見ると制限付きではあるがCの関数も呼べそうな雰囲気があるが
Cの引数型がSwiftで定義されてて、それを与えた関数はCの関数を呼んでるとみなし
Cのcalling conventionで静的リンクされるんじゃないの?

104:デフォルトの名無しさん
14/06/03 13:44:33.07 XlUvQuDj
>>102
いやいや、誰もCでObjCのクラスが書けるなんて言ってないが

105:デフォルトの名無しさん
14/06/03 13:45:27.17 Nh2RM5Lo
知ってるかい? VB6では
C言語の関数をそのまま呼べるんだよ。

Public Declare Function GetUserNameA Lib "advapi32" (ByVal buf as string, size as long) As Long
Public Declare Function GetUserName Lib "advapi32" Alias "GetUserNameA" (ByVal buf as string, size as long) As Long

106:デフォルトの名無しさん
14/06/03 13:46:29.73 Nh2RM5Lo
>>104
俺もそんな話してないが?

SwiftからC言語の関数をラッパー無しで
そのまま呼ぶことは出来ないって話しかしてない。

107:デフォルトの名無しさん
14/06/03 13:48:57.11 9AiAEfmm
とりあえず>>98の「できない」は間違ってるってことでいいじゃない

108:デフォルトの名無しさん
14/06/03 13:49:36.62 XlUvQuDj
>>106
んじゃ98は何なんだよ...
特定のクラスをObjCで実装すれば、そのクラスでCの関数を呼べる
そのクラスはSwiftで使える
という話じゃないの?

109:デフォルトの名無しさん
14/06/03 14:12:29.29 9Ltabfc6
>>81 LLVMでコンパイルしてるから中間コードは必要な情報は持ってるはずだろ。 中間コードではC、OBJC、C++全て同じ形式になってるはず。
C系のコンパイラにはClangを使ってると思った。

LLVM Compiler Overview
URLリンク(developer.apple.com)
In Xcode, the LLVM compiler uses the Clang front end (a C-based languages project on LLVM.org) to parse source code and turn it into an interim format.

110:デフォルトの名無しさん
14/06/03 14:31:47.48 6yhmnutt
結局、>>67の"そのまま"が、ラッパーないしインタプリタの有無をその対象に含んでいるか不明なのが問題かしら?

111:デフォルトの名無しさん
14/06/03 14:49:23.83 M9d0+DYH
どういう運用を想定しているんだろう
実行環境側に適切なバージョンのライブラリを配置する必要がある

112:デフォルトの名無しさん
14/06/03 14:53:58.14 XlUvQuDj
ObjCのクラスを継承したSwiftクラスは自動的にObjC互換
そうでないものは@objcを付けるとObjC互換

単にマングリングの問題なのか、ブリッジが入ってオーバーヘッドが生じるのか...

113:デフォルトの名無しさん
14/06/03 14:55:22.49 /aqJorFA
またApple専用言語かよ
信者がTwitterで絶賛してて気持ち悪い
LinuxとWIndowsで開発できない言語なんてロクでもない
ただの信者向け言語

114:デフォルトの名無しさん
14/06/03 15:11:23.41 9Ltabfc6
>>113 MSのTypeScriptみたいなものだよ。 あっちはJavascriptを生成し、こっちはマシン語を生成すると言う違いだけ。
中身は同じLVMMだからVSもEclipseプラグインも似たような物。
Swiftはインタラクティブなデバッグ環境を用意しているためにプリプロセッサを使っていないため多少敷居が高いだろうがプリプロセッサを通したコンパイラなら簡単に出来るだろ。

近いうちにオープンソース化されるよ。

115:デフォルトの名無しさん
14/06/03 15:34:29.27 AkPA7OdE
box2dみたいなCライブラリを使うには、C-FFIのAPIが必要になるのかな?

116:デフォルトの名無しさん
14/06/03 16:32:51.94 xS1agrJx
>>30
ダサいっつうか、普通って感じだな。
obj-cから解放されるだけで大歓迎だが。

117:デフォルトの名無しさん
14/06/03 16:35:20.87 /aqJorFA
俺は常に最新の情報を仕入れているんだと言わんばかりのツイートで語ってる奴って知名度上げたくて必死だね

118:デフォルトの名無しさん
14/06/03 16:38:05.79 xS1agrJx
>>44
でもobj-cの難点はあの文法だから、そういう側面ではJavaScriptに似てると思われても仕方がないと思う。

119:デフォルトの名無しさん
14/06/03 16:38:06.66 sk2oOubr
誰も聞いてないのに Twitter、Twitter って
コレだから Twitter 民は

120:デフォルトの名無しさん
14/06/03 17:52:53.68 d3S2ffsw
んでオープンな処理系はまだかね?
触りたいけどMacが修理中だお…

121:デフォルトの名無しさん
14/06/03 17:55:34.76 7VCuqd/G
URLリンク(stackoverflow.com)
Cの関数は直接呼べるようだ

というかそもそもSwiftの(クラスメソッドじゃない)funcは
引数に名前付けない限りはCの関数と同じ名前空間、呼び出し規則でバイナリに落とされるのかな?

122:デフォルトの名無しさん
14/06/03 18:08:07.36 2BJr+HwU
LLVMってすごいんだね

123:デフォルトの名無しさん
14/06/03 19:08:14.72 +L5eE3yS
未だにCの拡張版みたいな言語でアプリケーション作るのしんどいだろうから新しく言語作ってやったぜって事でいいのかな

124:デフォルトの名無しさん
14/06/03 19:12:17.00 7VCuqd/G
昔Cocoa Javaというのがあってだな

125:デフォルトの名無しさん
14/06/03 19:15:09.53 t1I4ETzW
いやでもSwiftわかいりやすいわ
.NET案件の多いWindowsの業務アプリ系の開発者はかなり嬉しいんじゃないの
TypeScriptをM$の技術者が作っただけあってそれをパクってるSwiftは.NETやってれば手癖で書けるから楽だわwww

126:デフォルトの名無しさん
14/06/03 19:20:17.45 xS1agrJx
>>123
大体あってると思う。
Cの拡張版だからというか、拡張部分のツギハギ文法が嫌われてる理由だと思うけど。

127:デフォルトの名無しさん
14/06/03 19:23:28.64 xS1agrJx
自分がそうなだけど、MacやiOSアプリ作りたいけどobj-cは嫌だって層がけっこうな人数いるだろうから、開発者激増しそうだな。

128:デフォルトの名無しさん
14/06/03 19:27:43.38 lYocvdBa
ざっと見たところ、いろんな意味でRustとかぶってるなぁ

129:デフォルトの名無しさん
14/06/03 19:29:50.57 E7KMzTZf
JavaScriptやってきた俺でも出来るのかな?
正直、Titanium Mobileは食指が伸びなかったので期待してるんだが

130:デフォルトの名無しさん
14/06/03 19:35:55.05 sk2oOubr
元々あるのか、ヘッダを読んで自動生成してるのか分からんけど、
普通にC標準ライブラリも呼び出せるな。fopen とか

俺module はどうやって作るんだこれ

131:デフォルトの名無しさん
14/06/03 19:40:30.12 GrNLWq+f
ひさびさにGoスレ並に伸びそうなスレ

132:デフォルトの名無しさん
14/06/03 19:42:03.11 qHlXCI8o
twitterでswiftディスってる人のツイートに粘着してるカス信者うぜえな

133:デフォルトの名無しさん
14/06/03 19:49:00.11 E7KMzTZf
>>71
on error goto や on error resume nextが使えるようになったらいいな

134:デフォルトの名無しさん
14/06/03 19:54:35.79 SsmCsZ51
早速さわってみたいけれども、どうすればいいの?
Windows か FreeBSD ならなんとか

135:デフォルトの名無しさん
14/06/03 19:58:36.38 thu5Bo8U
c = 標準語
obj-c = 沖縄方言
javascript = 関西弁(大阪)
swift = 関西弁(京都)

136:デフォルトの名無しさん
14/06/03 20:07:08.58 9Ltabfc6
>>134 取りあえず OSXが無いとどうにもならない。 WindowsにVMware入れて動かす手も有る。 お試しなら十分だろ。
今俺がこうしてる。
その上でデベロッパ登録すれば直ぐにダウンロードして使える。

137:デフォルトの名無しさん
14/06/03 20:19:05.04 t1I4ETzW
なに犯罪をドヤ顏で自慢してんだよ
Appleの開発環境はMac持ってないやつには公開・提供されないんだよ
クソ犬やクソドザは負けを認めてMac買え

138:デフォルトの名無しさん
14/06/03 20:43:00.95 W3xt/cSk
なんでjavascriptなんだろう
C++とかJavaライクなものなら嬉しかったのに

139:デフォルトの名無しさん
14/06/03 20:52:20.93 Y/pEIVnr
ま、どうってことない言語に思えるけど、Obj-Cから解放されるっていうのが最大のメリットだろうね

140:デフォルトの名無しさん
14/06/03 20:56:57.99 9AiAEfmm
>>138
どのへんがC++やJavaと違ってJavaScriptに見えた?

141:デフォルトの名無しさん
14/06/03 21:02:30.24 kzI/DT6H
変数宣言の構文とかセミコロンの扱いとかじゃねえの?

142:デフォルトの名無しさん
14/06/03 21:03:23.90 LbUp5C5M
>>134
取り敢えずMac miniでも買え。
飽きたらMac miniにWindowsやFreeBSDを突っ込めばO.K.

143:デフォルトの名無しさん
14/06/03 21:10:51.16 5DO4L7dm
中古のMacって相場いくらぐらいなんだろ

144:デフォルトの名無しさん
14/06/03 21:13:14.39 F1SxNhy2
apple版go言語だな

145:デフォルトの名無しさん
14/06/03 21:13:49.53 9AiAEfmm
>>141
Swiftは基本セミコロンいらないよ?いま上がってるサンプルとかにもほとんどセミコロンは無い
(一行に複数の文書きたいときだけ使うらしい)
JavaScriptはセミコロン省略できるとこもあるけど、文末にセミコロン欲しいしなるべく省略しないように書く

変数宣言構文はJavaScriptの拡張とかで使われてる形式で、
現在のJavaScriptでよく使う形式とはちょっと違うと思うんだが

146:デフォルトの名無しさん
14/06/03 21:20:57.57 LbUp5C5M
>>143
Macの中古相場は旧OSを欲しがる需要が高く、値崩れし難いのでかなり高い。
新品を買って、要らなくなったら売っても、買値からあまり落ちずに高く売れるので新品買った方が良い。
場合によっては型落ち中古が現行機よりも高い事もあったりするので、投機目的ついでに買っちゃえ。

147:デフォルトの名無しさん
14/06/03 21:22:13.68 Y/pEIVnr
ヤフオクとかでインストールdvd買ってvmwareに入れればいいよ

148:デフォルトの名無しさん
14/06/03 21:27:55.61 qHlXCI8o
>>137
MacにはWindowsいれられるのに
WindowsにはMac入れちゃいけないキチガイな企業のOSとか言語なんて滅びちゃえよ!

149:デフォルトの名無しさん
14/06/03 21:28:06.80 kzI/DT6H
>>145
んなことは知ってるから国語の教科書でも読んでろ

150:デフォルトの名無しさん
14/06/03 21:29:33.63 M9d0+DYH
セミコロンなんてCが遺した最大級の悪弊の一つ

151:デフォルトの名無しさん
14/06/03 21:34:06.35 9AiAEfmm
>>149
>>141はSwiftの変数宣言の構文とかセミコロンの扱いがJavaScriptと似てるって言いたいんじゃないの?
それに対してかなり違うよっていう俺の意見なんだが?

152:デフォルトの名無しさん
14/06/03 21:37:46.29 lI9Ae8oA
型があるし、クラスがあるし、
どっちかって言うとTypeScriptに似てるよね。

153:デフォルトの名無しさん
14/06/03 21:46:19.90 D/9V5d8o
これってWindowsでビルドできるの?

154:デフォルトの名無しさん
14/06/03 21:47:13.03 kzI/DT6H
>>151
「C++やJavaと違って」

155:,,・´∀`・,,)っ-○○○
14/06/03 21:48:55.94 h45MFUqG
Rubyっぽい構文に惹かれた

156:デフォルトの名無しさん
14/06/03 21:51:54.07 pg5ki0wv
scalaっぽさに惚れた

157:デフォルトの名無しさん
14/06/03 21:52:13.73 9Ltabfc6
>>153 出来ない。 今の処

158:デフォルトの名無しさん
14/06/03 21:55:37.09 hO8OPW7Z
言語仕様が公開されてるならWindowsのコンパイラもそのうち出来るんじゃないの?

159:デフォルトの名無しさん
14/06/03 21:58:16.37 9AiAEfmm
>>158
コンパイラだけきても、WindowsでCocoa API呼べてもしょうがないし、
WindowsのAPIが呼べるようにするのは簡単ではないだろう

160:デフォルトの名無しさん
14/06/03 21:58:53.82 9AiAEfmm
>>154
セミコロンの扱いに関しては、C++やJavaは、ほぼJavaScriptと同じ。SwiftはC++やJavaやJavaScriptとは異なる。
だから、Swiftのセミコロンの扱いが、C++やJavaと違って、JavaScriptに見えるのはおかしい。

変数宣言構文に関しては、C++やJavaとは違うし、JavaScriptとも違う。
だから、Swiftの変数構文がC++やJavaとは違うのはいいとして、JavaScriptに見えるのはおかしい。

161:デフォルトの名無しさん
14/06/03 22:01:17.28 rRxa4+Jq
Swift!
URLリンク(www.goo-net.com)

162:デフォルトの名無しさん
14/06/03 22:08:09.98 pg5ki0wv
CPUの歓声が聞こえる

163:デフォルトの名無しさん
14/06/03 22:10:02.93 0x6aWx6R
C#から見たApple Swift
URLリンク(d.hatena.ne.jp)

164:,,・´∀`・,,)っ-○○○
14/06/03 22:15:03.10 h45MFUqG
セミコロンは文の区切りだね。
改行が文の区切りとみなされるようだ。
ということはバックスラッシュで行連結とかもあるのかな。
ifやfor文で括弧使わないところとかprintlnの文字列組み立てとかもRubyっぽくて素敵

165:デフォルトの名無しさん
14/06/03 22:15:38.30 Q95pPloD
>>163
自作自演の売名乙

166:デフォルトの名無しさん
14/06/03 22:17:49.49 9Ltabfc6
swift = アマツバメ
URLリンク(upload.wikimedia.org)

167:デフォルトの名無しさん
14/06/03 22:20:13.02 WDX0jN2+
これからiOSの仕事始めるのだが、Swiftで書くべき?著名人は何て言ってる?

168:デフォルトの名無しさん
14/06/03 22:25:51.60 pg5ki0wv
>>167
納期はいつなのか?

169:デフォルトの名無しさん
14/06/03 22:26:13.34 9Ltabfc6
Swiftだろ。 今更OBJCでやる意味が無い。
急ぎでやるなら別だが。 完成が秋以降の予定ならSwift

170:,,・´∀`・,,)っ-○○○
14/06/03 22:26:21.75 h45MFUqG
Objective-C/C++のコード資産は当分残るだろうから食わず嫌いはしないほうがいいんでない?

171:デフォルトの名無しさん
14/06/03 22:27:10.18 WDX0jN2+
納期は3ヶ月後

172:デフォルトの名無しさん
14/06/03 22:27:53.60 d9BmVsD9
Obj-Cしかないじゃん

173:デフォルトの名無しさん
14/06/03 22:29:06.38 pg5ki0wv
>>171
残念だったな

174:デフォルトの名無しさん
14/06/03 22:31:06.89 kzI/DT6H
>>160
へー

175:デフォルトの名無しさん
14/06/03 22:38:05.27 WDX0jN2+
Getting "Am I wasting my time reading your iOS book?" No, the book is really about the frameworks. The transition to Swift will be painless.(@AaronHillegass)
だそうだから、Swiftで書こうかな。

176:デフォルトの名無しさん
14/06/03 22:38:35.11 9Ltabfc6
>>170 ObjC からSwift のコンバータで変換する方向みたいだよ。

>>171 微妙なところだが、納期が決まってたら冒険出来ないね。

177:デフォルトの名無しさん
14/06/03 22:44:42.15 WDX0jN2+
SwiftでiTunes Connectにアプリ申請できるのはいつ頃?

178:デフォルトの名無しさん
14/06/03 22:47:41.12 Fqc6zuT2
Scala, TypeScriptなど、型名を後ろに書く言語が増えてるのは、その方が文法解析しやすいから?

昔、Cのパーサーについて書かれた文章に、何となくそんな感じのことが書いてあったような気がするんだが。

179:デフォルトの名無しさん
14/06/03 22:48:31.36 h+Sf66BK
why(matters(Swift) > matters(Yosemite + iOS[8]))
URLリンク(blog.livedoor.jp)

180:デフォルトの名無しさん
14/06/03 22:58:24.37 lI9Ae8oA
>>178
省略可能だから。

int i ・・・ intを省略できない。
var i: int・・・intを省略したらvar i

型ありでありながら、型の記述を省略できるようにすると
必然的にこうなってしまう。

まあ、var<int> i みたいな書き方も考えられるけどね。
そこはJavaScriptみたいな言語でのvar iという書き方を
ふまえたからそうなったのだろう。

181:デフォルトの名無しさん
14/06/03 23:16:05.25 JVBQ3X9G
>>162
マシン語が透けて見える

182:デフォルトの名無しさん
14/06/03 23:16:48.39 5GNqzpIY
Pascal
var 変数名 : データ型名;
var 変数名1, 変数名2, ・・・ ,変数名n : データ型名;

183:デフォルトの名無しさん
14/06/03 23:23:22.22 OIzVF/VN
androidもjava捨ててgoにしてほしい。

184:デフォルトの名無しさん
14/06/03 23:30:09.34 OsTKsrgO
まともに商売しようとする所はiOSもAndroidもフロントエンド以外は共通化や高速化の為に
結局C言語で書くわけだから、特に何も変わらないだろう

185:デフォルトの名無しさん
14/06/03 23:31:00.44 9AiAEfmm
関数型の変数宣言するのにも「型 変数」よりも「変数:型」の方がわかりやすく書ける気がするな

186:デフォルトの名無しさん
14/06/03 23:39:29.36 LbUp5C5M
>>171
出たばっかでまだ不明な事が多いのに、イキナリ本番ぶつけるなんてチャレンジャーだな。

187:デフォルトの名無しさん
14/06/03 23:42:28.57 nZtxpwF+
tipsサイトはよ

188:デフォルトの名無しさん
14/06/03 23:54:24.32 lYocvdBa
>>185
静的型付けの関数型言語って、ほぼ全て後者だと思うけど
前者の例って何かあるかな?

189:,,・´∀`・,,)っ-○○○
14/06/04 00:14:41.71 IxbVXe6H
C++にも型名の代わりにautoキーワードで変数作れる機能あるしねー
リテラルから型が推定できるからこそできる業であって。

とはいえもともとObj-Cが動的バインディングを売りにしてたし
ある程度は実行時評価の部分は残るのかなという気がしている。

190:デフォルトの名無しさん
14/06/04 00:18:30.10 F6AvD4LE
動的バインディングってようするに
C++でも採用されてる多態性のことだよね?
動的に実行するクラスが決まる。

191:デフォルトの名無しさん
14/06/04 00:20:20.77 lzmGUwMb
だってこれ動的型付け言語じゃん
俺は静的な方が好きなんだけどObjective-Cじゃないならなんでもいいや
あと>>163でジェネリクスと変性って同じだろw

192:デフォルトの名無しさん
14/06/04 00:22:57.35 lzmGUwMb
>>189
なんで団子がここにいんだよ、自作板専住じゃないんかよw
セレクターを指定したメッセージだろ、売りっつーかリフレクションなんてC#でもあるじゃん

193:デフォルトの名無しさん
14/06/04 00:26:25.62 HmwUcklb
>>191
型推論付きの静的型付け言語じゃないの?

194:デフォルトの名無しさん
14/06/04 00:32:12.69 3yUc27H8
そうだよ

195:デフォルトの名無しさん
14/06/04 00:46:21.56 Kny2oUjp
AS3使ってきた人にはSwiftは楽勝だな

196:デフォルトの名無しさん
14/06/04 00:56:00.63 aeQAlcnR
STAP細胞はSwiftで作れますか?

197:デフォルトの名無しさん
14/06/04 00:58:18.18 5LoqN5d1
いきなりswiftスレ乱立したな。
でも俺もけっこう心揺れてる。

ちょうどノートPC壊れてるとこだし、次はMac Book Pro の英語キーボードモデル買ってしまうかもしれんw

198:デフォルトの名無しさん
14/06/04 01:00:06.63 HmwUcklb
>>195
その手の言語を使ってた人には
ARCの関係でオブジェクト間の参照が循環しないように強参照とか弱参照とか使い分ける必要があるのが
ちょっと解り難かったりするんじゃないのかね?

199:デフォルトの名無しさん
14/06/04 01:05:15.86 5LoqN5d1
>>198
c++erにはshared_ptrとweak_ptrでとっつきやすかも。

200:デフォルトの名無しさん
14/06/04 01:05:16.40 zW2IOeMv
C++の設計と進化にも、i: intの記法検討したとあったね。

201:デフォルトの名無しさん
14/06/04 01:19:28.21 HmwUcklb
C++はCとのしがらみを優先したんだな

202:デフォルトの名無しさん
14/06/04 01:22:12.01 cWUULp7C
Objective-CもCとのしがらみを優先させた。

203:デフォルトの名無しさん
14/06/04 01:36:14.30 skACIWTN
時代はC#とかScalaとか動的言語並にサクサク書ける静的言語だけど
C#ですらプラットフォーム問題で言語の出来以上に流行らないのにこれはきついな

204:デフォルトの名無しさん
14/06/04 01:38:26.73 xGg4fi+U
clangがサポートしてくれれば意外と流行るかもよ

205:デフォルトの名無しさん
14/06/04 01:47:53.73 OMtzL7Lr
>>191
これのどこが動的型付けなんだよ

206:デフォルトの名無しさん
14/06/04 01:55:00.29 HxV5cJYc
コマンドラインでSwiftとそれ以外を混ぜて扱おうとすると結構面倒だな
Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift
がswiftコンパイラ

ソースが全部swiftの場合はswift main.swift src2.swiftみたいに与えればバイナリができるので簡単

SwiftのソースからCやObjCを呼んでる場合、swift main.swift -import-objc-header bridge.h -cとして
CやObjCの関数/クラスの定義ファイルを与え、-cオプションでコンパイルのみとしリンクはしない
その後CやObjCのファイルを別途コンパイルし、swiftの.oファイルと一緒にリンクする

swiftの関数はぱっと見Cのcalling conventionと同じようだけど
マングリングされてるから直接名前解決は出来ないみたいね

207:デフォルトの名無しさん
14/06/04 01:57:10.08 HmwUcklb
>>204
clangがサポートしても
ARCなメモリ管理前提のフレームワークとか無いと
いろいろやるのはきついんじゃないかね?

208:デフォルトの名無しさん
14/06/04 02:01:15.34 OMtzL7Lr
GCじゃなくてARCな時点でApple以外に開けていく気がしない

209:デフォルトの名無しさん
14/06/04 02:15:56.81 HxV5cJYc
結局ランタイムがCocoaにべったりだからねえ
非Appleプラットフォームではコンパイラサポートだけあっても...という状況はObjCと変わらないのでは

210:デフォルトの名無しさん
14/06/04 03:31:07.92 kyQoLknM
近い将来、Linuxで動作する可能性はあるの?

211:デフォルトの名無しさん
14/06/04 03:58:21.61 Sji88DYX
objective-cがMac以外で環境なかったんだし
swiftも他プラットフォームへの展開はないんじゃないかなあ

212:デフォルトの名無しさん
14/06/04 04:06:35.78 njjTYj+V
色んな意味で言語として良いものであったのなら
C#のMONOやJavaScriptのNode.jsみたいに他所で利用できるように誰かがコンパイラなりインタプリタなり作るやろ

213:デフォルトの名無しさん
14/06/04 04:08:00.81 lzmGUwMb
Swiftの価値はObjective-C/C++以外選択肢がなかったOS X/iOSプログラミングにおける希望だってとこだろ
Windowsプログラミングで.NETの牙城崩せるわけない、仮にIronSwiftとかS#が出たとしてVB/C#からどれだけ乗り換えると思う?

214:デフォルトの名無しさん
14/06/04 08:03:55.13 Yu09y9YD
ぶっちゃけ Dart とどっちがエロいの?

215:デフォルトの名無しさん
14/06/04 08:11:48.50 kyQoLknM
でも、例えば ScalaのJVM以外の実装って結局誰も作らなかったよね

216:デフォルトの名無しさん
14/06/04 08:16:52.72 BAiB0Jc7
JVMは一応マルチプラットフォームだからじゃね

217:デフォルトの名無しさん
14/06/04 08:48:04.92 vLt86izD
>>206

$ xcrun swift main.swift

でいけるで

218:デフォルトの名無しさん
14/06/04 09:09:30.04 skACIWTN
見た感じ Scala > C# = Swift >> Java に思える

219:デフォルトの名無しさん
14/06/04 09:11:13.67 /kuZAFQe
Rubyに似ている。

220:デフォルトの名無しさん
14/06/04 09:12:34.59 BAiB0Jc7
URLリンク(en.wikipedia.org)
英語wikipediaだと影響受けた言語は[1]のとこから

Objective-C, Rust, Haskell, Ruby, Python, C#, CLU

ってことになってるけど

221:デフォルトの名無しさん
14/06/04 11:02:47.57 pM55bPxZ
昔は、GNUがnext.stepやobjcのオープン実装つくってたんだよね。
MSは、xamarinのicazaがやってた。
URLリンク(ja.m.wikipedia.org)

こんな実装なんだし、何年かすればGCDみたいにBSD向けのSwiftもappleから公開されそう。
URLリンク(m.pc.watch.impress.co.jp)

222:デフォルトの名無しさん
14/06/04 11:04:33.67 YxCZZ9Nt
lispに似てる

Swiftはc言語の皮を被ったLispだ

223:デフォルトの名無しさん
14/06/04 11:18:03.80 FIriE4+G
尖った機能がないから、他のプラットフォームでわざわざ使う気になるかねぇ。
プログラミングし易いっていのは魅力の一つだろうけど、それとて並列化方面に関してはさっぱりだし。

224:デフォルトの名無しさん
14/06/04 11:19:20.55 g5VriG8B
素直な言語とは良いものだ

225:デフォルトの名無しさん
14/06/04 11:23:39.69 xXl2xTzu
言語仕様が優れてるだけで流行るなら既に数多の言語が新興言語に置き換えられてるから
モダンな機能を詰め込んだ俺様言語の処理系を作るだけなら大学生でもできる

226:デフォルトの名無しさん
14/06/04 11:32:18.87 kLcwl7ag
取り残されてた旧世代環境に、並の現代言語投入されたってだけだが
市場的に学習価値は高いから、勢いで同レベルの言語中ではトップになりそう
iOSの将来性がちょっとわからんが

227:デフォルトの名無しさん
14/06/04 11:34:56.45 WGeQMsM6
開発者の多さが支えになるだろうしオープン化も早いだろう。
今までObjCに二の足を踏んでいたJavaやJavascript開発者がドットなだれ込んできそう。

Appleとしては開発者囲い込みに成功する。 そしてMacも売れiOS端末も売れる。 Swiftは今後のAppleにとって好材料。

228:デフォルトの名無しさん
14/06/04 11:52:19.41 8tntsw4v
Obj-C開発者の推移が気になるわ
末期的にエキスパートだけ残るパターンとしてもかなり希少になりそう
appleならはやめにxcodeでも使えなくするんだろうな

229:デフォルトの名無しさん
14/06/04 12:15:27.51 WGeQMsM6
>>228 いなくなっても困らないだろ。 今までのObjCのソースはSwiftにコンバートしてしまえば良いんだから。

230:デフォルトの名無しさん
14/06/04 12:27:33.48 Dyo1rkeX
モダンな言語なら、ソースからドキュメントを生成するルールを定めてツールも提供して欲しいぜ

231:デフォルトの名無しさん
14/06/04 12:30:04.08 YxCZZ9Nt
アップルに技術を期待してる奴がいるのは驚きだよ。
アップルは技術は2流だがデザインは1流です。

232:デフォルトの名無しさん
14/06/04 12:43:10.87 op53gt9r
それ過去の話だろじじぃ
ジョブズが死んでからのアップルなんて今までなかったし

233:デフォルトの名無しさん
14/06/04 13:24:50.04 BC1WjjK/
技術面もシステムデザイン的なところは昔から一流だと思うけどな。
製品化した後の運用は色々とアレだけど。

234:デフォルトの名無しさん
14/06/04 14:25:08.83 YxCZZ9Nt
>>233
少なくともソフトウエアエンジニアリングの観点からみたアップルは世の中に革新的な技術は何一つ発信して無いと思うけど。
あるなら何か例を挙げてみて。
それからアップルでソフトウエアで有名な人って誰がいる?
グーグルのgo開発者とかマイクロソフトのdartの開発者級のひとを挙げてみてよ。

235:デフォルトの名無しさん
14/06/04 14:32:18.77 vLt86izD
リフレクション的なのないのかね
Objective-C runtime libraryみたいなの

236:デフォルトの名無しさん
14/06/04 14:56:51.89 WGeQMsM6
>>234 そもそもウインドーシステムを世に広げたのがAppleだと言う事を忘れてしまってるな。
坊やが生まれる前の話だが。
日本でインターネットで漢字が使えるようになったのもApple。
漢字がまともに使えるようになったのは、Postscript プリンタが普及したから。 Apple無くして日本の漢字文化は語れない。

Objective-CはClangに入り、思想はLLVMに受け継がれSwiftで次のステップに入った。

WebkitもLLVMもApple主導。 LLVMの中心的開発者Chris Lattner =original author of the LLVM
URLリンク(www.nondot.org)

237:デフォルトの名無しさん
14/06/04 14:58:37.28 HmwUcklb
>>234
Dartはグーグルで、開発は社内のあんまり有名じゃない人だよね?
GoのロバートやケントンプソンはGoogleの人というより、ベル研から引っ張ってきた人だしなあ
Googleは他にもSUNとかいろんなとこから有名どころを集めてるね
MSだと今はC#とTypeScriptのアンダース・ヘルスバーグが有名だけど、この人もMSの人というよりはBorlandの人かな

Appleはいまは有名な人?はいなくても
Webkit関連とかLLVM関連で多大な貢献をしてると思うよ

238:デフォルトの名無しさん
14/06/04 15:03:56.94 HmwUcklb
>>236
>日本でインターネットで漢字が使えるようになったのもApple。
これはどうかな~?w
でもMSがインターネットへの参入に二の足を踏んでるときに、公式にMacTCPとか公開して積極的に取り組んだのはアップルだね

239:デフォルトの名無しさん
14/06/04 15:04:26.94 Q5ELIKYC
あ、これ静的型付き言語か(推論で省略するんだろうけど
それなら細かいところのセンスが気に入らなくても使えそうだなぁ

240:デフォルトの名無しさん
14/06/04 15:08:22.59 BC1WjjK/
古い話だけど、個人向けのコンピュータの世界でAPIってのをキレイにデザインして
ちゃんとしたInside Macintoshみたいな資料を作り始めたのはAppleが最初だと思うし、
オブジェクト指向のフレームワークを使い始めたのもAppleが最初だと思うし、
今ある色々な重要なものの影響元をたどっていくとけっこうAppleにたどり着いたりする印象。
有名人な個人は今は知らないけど、昔はすごいのが沢山集まってたよね。

241:デフォルトの名無しさん
14/06/04 15:39:44.37 rqNkJHrW
>>238
インターネット系は、NeXT由来が多かったりしない?

242:デフォルトの名無しさん
14/06/04 15:49:30.52 HmwUcklb
>>241
WWWのプロトタイプ的なものを作ってた人がNextを使ってただけで、
インターネットの技術の大半はSUNとかの純UNIX由来のものが多いかな?
インターネット上の漢字の取り扱いについては、特に特定のベンダーが貢献したというより、
大学とか研究所の関連の人の貢献が大きいと思う
そういう人が使ってたマシンはSUNとかのUNIXワークステーションかなあ

243:デフォルトの名無しさん
14/06/04 15:53:18.33 YxCZZ9Nt
>>237
つまり今はいねーと

244:デフォルトの名無しさん
14/06/04 15:53:57.99 BC1WjjK/
日本語は村井純さんあたりの人達が頑張ったんじゃないのかね。
NeXTが出た頃はメールとかニュースとかはもう日本語でやり取りされてたような。

245:デフォルトの名無しさん
14/06/04 15:54:27.89 viK5F260
ソニーのNEWSの頃だなー

246:デフォルトの名無しさん
14/06/04 16:06:04.88 WGeQMsM6
それ以前、ディスプレイにまともに漢字が表示出来なかったんだよ。
勿論漢字Talk の上では漢字は使えたが、訳の解らないWEBの漢字を表示するのは一苦労だった。

単なる誰かの部屋のコーヒーカップを全世界から覗いて居た時代。

247:デフォルトの名無しさん
14/06/04 16:06:10.85 PEn48C0f
>>243
なにいってるんだこいつ

248:デフォルトの名無しさん
14/06/04 16:15:58.68 HmwUcklb
>>246
そのころ使ってたブラウザってmosaicやnetscape(まだかな?)かな?
SJIS以外でエンコードされてるページが表示できるようになったのは単にブラウザアプリが対応しただけではないのかと

249:デフォルトの名無しさん
14/06/04 16:23:34.44 T4v3WcMA
既存の言語と大差ないのだからわざわざ方言増やすなと思わないでもないが、
Objective-Cのランタイム上で動かす都合上しょうがないか。
GCじゃなくてARCなのもそれだけの為だろうし。

250:デフォルトの名無しさん
14/06/04 16:28:25.67 WGeQMsM6
>>248 そうそうそんな時代、Netscapeもすぐに出て来た。

ただ、その頃アウトラインフォントを扱えるのはAppleだけだった。

だから出版業会のコンピュータはMac一色になって行った。

251:デフォルトの名無しさん
14/06/04 16:34:07.39 WGeQMsM6
>>249 結構今までの最近の言語と親和性は高いと思うけどな。

別に全く解らない外国語になったわけでも無いし、ほとんどの人間が理解出来るだろ。
単に新しい文化を取り入れるために語彙が多少変化したレベルだろ。 気にするほどじゃ無い。 むしろ歓迎してる人間の方が多いんじゃ無いかな。

252:デフォルトの名無しさん
14/06/04 16:43:17.18 od/ZDGTp
何のスレだっけ?

253:デフォルトの名無しさん
14/06/04 16:45:28.37 b5Hi+AwG
Apple信者が自慢するスレ

254:デフォルトの名無しさん
14/06/04 16:47:13.83 OMtzL7Lr
懐古がわめくスレ

255:デフォルトの名無しさん
14/06/04 16:59:33.58 2ij5JthN
sωift

256:デフォルトの名無しさん
14/06/04 17:23:31.98 7qsqgZJC
適切に練り上げた順当進化。
パラダイムを揺さぶるようなエポックメイキングはない。
Jobs後のAppleらしい。
でもこういうのは普通に便利。

257:デフォルトの名無しさん
14/06/04 17:26:57.82 dG12cibU
昔はアップルと言えばビル・アトキンソンだったよなあ

258:デフォルトの名無しさん
14/06/04 17:31:26.40 7YhW0iEb
とっつきやすさがObjective-Cとは比較にならん。

259:デフォルトの名無しさん
14/06/04 17:42:07.87 vLt86izD
Obj-Cって字面がちょっと変わってるだけで、そんなに難しいもんじゃないんだけどな
っていうか仕様で言ったらSwiftよりコンパクトなんじゃないか

260:デフォルトの名無しさん
14/06/04 17:46:31.42 0+neaqeG
>>250
adobeのPostScriptフォントが先だろ
これに対抗してMicrosoftとappleが共同で作ったのがTrueTypeフォント

261:デフォルトの名無しさん
14/06/04 17:47:14.97 rqNkJHrW
言語の使いやすさより、リファレンスやサンプルの使いやすさが大事だと思うわ。
俺にとっては言語のポリシーが帰納的に分かるってことが、使いやすい言語だから。

やりたいこと→リファレンス・サンプル漁る→作る→改変→改変→理解。
全部言語仕様を理解する前にこんな感じで使って行くと思うし。

262:デフォルトの名無しさん
14/06/04 18:09:13.32 aeQAlcnR
ちょっとスズキ行ってくる

263:デフォルトの名無しさん
14/06/04 18:28:53.69 75n0/ZS9
>>259
Obj-Cは言語仕様はシンプルかもしれないけどその分文字列や配列操作等
他の言語だと簡便なインターフェイスを提供されている状況でも
長ったらしいメソッドを呼び出す必要があったから無駄な記述が増えて
結局面倒くさくなってるんだと思う

264:デフォルトの名無しさん
14/06/04 18:30:25.09 WGeQMsM6
>>260 そう、当時AdobeはAppleと密接だった。Adobeが潰れそうだった時助けたのがApple.
だからAbobeのPostScriptを使えるのはAppleだけだった。

TrueTypeはその後。

>>261 現代的には正しいと思う。 Swift にはPlaygroundでインタラクティブにデバッグ出来るのが入りやすいと思う。

265:デフォルトの名無しさん
14/06/04 18:58:38.93 Wzfw6YqE
結論としては、Obj-Cはクソということでよろしいか

266:デフォルトの名無しさん
14/06/04 19:07:41.13 l+0mexgB
Obj-CがクソっていうかObj-Cで縛られてたのが糞
本来CやC++と比較すべきで今どきの高級言語と比較するべき言語じゃない

267:デフォルトの名無しさん
14/06/04 19:33:16.35 Dyo1rkeX
let cs = CGColorSpaceCreateDeviceRGB()
let bytes : CMutableVoidPointer = nil
let bitmapInfo = CGBitmapInfo(CGImageAlphaInfo.PremultipliedFirst.toRaw()) | CGBitmapInfo.ByteOrder32Little
let context = CGBitmapContextCreate(bytes, 128, 128, 8, 512, cs, bitmapInfo)
assert(context)
println("context: \(context)")

出来るもんだな

268:,,・´∀`・,,)っ-○○○
14/06/04 19:53:05.18 IxbVXe6H
evalがなきゃLispじゃない

269:デフォルトの名無しさん
14/06/04 19:55:30.57 JBQPlllN
先進的で無くても、使い易ければ
いいんだよ

そーいうのは他にやらせておけっての

270:,,・´∀`・,,)っ-○○○
14/06/04 19:57:40.23 IxbVXe6H
結局ObjCの資産をそのまま継承するなら
JavaScriptに対するCoffeeScriptとみたいな関係なのかね

271:デフォルトの名無しさん
14/06/04 20:21:53.89 tQ3BjKTv
まあメソッド呼び出しはobjc_msgSendでメソッド名渡しなのは変わらんしね

272:デフォルトの名無しさん
14/06/04 20:30:48.98 0Kp0kozD
Appleは最終的にObjective-CをSwiftで完全に置き換えようとしているのか?
Appleの人はcoexistとか言ってたけど。

273:,,・´∀`・,,)っ-○○○
14/06/04 20:55:45.48 IxbVXe6H
OSXが出たときもJavaが本命でObjCはNeXTコード資産のための
レガシーサポートという位置づけだったのがここまで引きずってるんだから
どう転ぶかは判断しようが無いのでは

274:デフォルトの名無しさん
14/06/04 21:00:10.31 7qsqgZJC
Cocoa touchはあいかわらずとっつきにくいんだよな。

275:デフォルトの名無しさん
14/06/04 21:07:26.56 xm3VPSs1
>>265
Smalltalk大好きッ子としてはObj-Cは嫌いになれないのだが、同時にC++Loverでもあると表記はキモイことこの上ないのであるよ。

つかObj-Cって割と自由度高いのにApple縛りでものすげぇ損してる感じ。

276:デフォルトの名無しさん
14/06/04 21:08:13.83 /kuZAFQe
>>186 出たばかりでもAppleなら問題ないだろう。Core Data + Swift + UITableViewもちゃんと動いている。

277:デフォルトの名無しさん
14/06/04 21:14:58.45 u9+TRf9N
インストールディスク買って+VMWareでdeveloper登録からiOSでテストまでやってる人いる?
Swiftを機にiOSアプリやってみたいけどMac高過ぎて

278:デフォルトの名無しさん
14/06/04 21:16:57.44 Dyo1rkeX
PlayGround 作った奴天才だな。かなり教育的に使えるわ

279:デフォルトの名無しさん
14/06/04 21:17:35.84 xm3VPSs1
>>277
MacMiniでいいじゃん、同じサイズのWindows機より安いと思うぞ。(つかこのサイズだと何故かAtomだらけだし)

280:デフォルトの名無しさん
14/06/04 21:24:49.45 yBmYXv9z
アクセス修飾子ってないの?
Java脳なので違和感ある

281:デフォルトの名無しさん
14/06/04 21:27:11.83 cQAxVs0p
PlayGroundがブラウザで遊べたらなぁ
職場にMac無いし

282:デフォルトの名無しさん
14/06/04 21:29:50.40 UictbWAC
>>35
clang/LLVMを挟むならOS不問にならないものだろうか。
既存のC/C++のライブラリとリンクできたら色々できそうなんだけど。

283:デフォルトの名無しさん
14/06/04 21:43:01.86 JBQPlllN
絵文字使える時点でappleは他環境に使わせる気
無いだろねw

284:デフォルトの名無しさん
14/06/04 21:48:06.41 Dyo1rkeX
>>283
絵文字って普通の Unicode の絵文字だろ

285:デフォルトの名無しさん
14/06/04 22:07:09.34 UictbWAC
Mac持っててもiOS Developer ProgramかMac Developer Program(両方とも$99/year)
に参加してないとXCode 6 betaをダウンロードできないのね。
現状はiOSアプリ開発者が盛り上がってるだけか。

286:デフォルトの名無しさん
14/06/04 22:11:06.04 tG9mbRWa
>>282
課題はオブジェクトランタイムかなと思ったけどCore Foundationなんかは既にDarwinでオープンだし、技術的障害はなさそうだからあとはAppleの胸先三寸なのかな。オープン化に期待したいなあ
いやまあobj-cのリプレース目的だけでも大歓迎だけど、ネイティブやれるモダン言語ってC#より低レベル寄りで色々活用できそうだし、地味なwktk感がある

C++1yやDが目指してた世界を、過去のしがらみもVMなしに成し遂げた理想郷…てのは言い過ぎか
obj-c互換はApple的に必須なのはわかるけど、>>271とかちょいひっかかるしw

287:デフォルトの名無しさん
14/06/04 22:15:51.07 b9n5cjsp
swiftってmacアプリも開発できるよね?(できるようになるよね?)

288:デフォルトの名無しさん
14/06/04 22:20:09.49 Dyo1rkeX
>>287
現段階ではiOSアプリしか作れないとかイカレた勘違いをしてる?

289:デフォルトの名無しさん
14/06/04 22:20:13.83 JBQPlllN
うん

290:デフォルトの名無しさん
14/06/04 22:29:28.35 OMtzL7Lr
Cocoaだと何度いえば

291:デフォルトの名無しさん
14/06/04 22:53:20.37 b9n5cjsp
>>288
なんか自分が見た記事だとiOSのことは書いてあっても
macのことに触れてなかったから不安だった(笑

292:デフォルトの名無しさん
14/06/04 23:19:38.85 feLWhvB/
protocolとかnilとかがあれだな

293:デフォルトの名無しさん
14/06/04 23:22:55.39 lw8nwtDH
nilってゼロの事でしょ
連想配列をハッシュと呼んじゃうくらいキモイ

294:,,・´∀`・,,)っ-○○○
14/06/04 23:24:46.85 IxbVXe6H
Smalltalkからの文化ですがな。
やっぱりRuby使いが惹かれるわけだ。

295:デフォルトの名無しさん
14/06/04 23:47:40.10 ZpUZWvA8
Pascalじゃね?

296:,,・´∀`・,,)っ-○○○
14/06/05 00:00:31.18 3JZcEM9N
PascalにHashは無いだろ
URLリンク(en.wikipedia.org)

297:デフォルトの名無しさん
14/06/05 00:12:36.85 mHl+sgam
>>281

LightTableから持ってきたらしい。
ちなみにLTの作者は元VisualStudio開発者。

298:デフォルトの名無しさん
14/06/05 00:13:03.81 awAmNJBx
これは熱い。メコメコ省略できる
URLリンク(qiita.com)

let sorted = sort(anArray, { (s1: String, s2: String) -> Bool in
return s1 < s2
})

let sorted = sort(anArray, { s1, s2 in
return s1 < s2
})

let sorted = sort(anArray, { s1, s2 in s1 < s2 })

let sorted = sort(anArray, { $0 < $1 })

let sorted = sort(anArray, <)

299:デフォルトの名無しさん
14/06/05 00:16:34.65 9Qbaj8FJ
>>279
アプリ試しに作ってみるためだけに数万もかかるのはちょっと

300:デフォルトの名無しさん
14/06/05 00:20:19.62 7TbnobGZ
>>298
うわ、なんだこりゃw
obj-cの反動かとさえ

301:デフォルトの名無しさん
14/06/05 00:25:17.74 mHl+sgam
Learn about iOS8
URLリンク(developer.apple.com)


テンプレプロジェクトをSwiftにしてiOS7の実機で動かしてみたけど、たまにDynamicCastClassExceptionみたいので落ちるのがある。
シミュレータだと大丈夫なので、バグか、それともC#(Xamarin)と実機みたいな関係かな?

302:,,・´∀`・,,)っ-○○○
14/06/05 00:28:50.63 3JZcEM9N
Rubyでは当たり前だったりする

このへんはホントRubyの影響大きいと思う。
URLリンク(developer.apple.com)

303:デフォルトの名無しさん
14/06/05 00:34:30.36 /T91KtMA
>>286
clay/llvmとかgoとかそれっぽいけど、
URLリンク(claylabs.com)

swiftのほうが、簡潔さと関数型プログラミング要素は強いね。

当然clayやgoと同じようにシステム向けにも向いてる。

304:デフォルトの名無しさん
14/06/05 00:35:17.34 JNiK/tgP
1 < 2 の代わりに <(1, 2) とかできるん?

305:デフォルトの名無しさん
14/06/05 00:35:48.12 K1IZV/iA
>>298
The Swift Programming Language読み進めてて
とにかくまずそういう「え?これで適切に動くの?」ってのが
ちょいちょい気になって読むのが止まるw
インタラクティブに試せるから
Xcodeで打ち込んで試しながら学べって感じか。

306:デフォルトの名無しさん
14/06/05 00:38:07.04 /T91KtMA
>>287
Xcode6-beta.app起動すると、
osxもiosもテンプレプロジェクトに出て来て、
osxはswift/objc/c/c++選べて、
iosはswift/objc選べる。

307:デフォルトの名無しさん
14/06/05 00:42:37.85 awAmNJBx
rubyでも
array.sort_by{ |a, b| b <=> a }
array.sort{ |e| e }
array.sort(&:-)
array.sort &:-
とかできるけど
sort(array, <)
には負けた感ある

308:デフォルトの名無しさん
14/06/05 01:00:35.30 8eoXOyJj
Obj-Cのメソッドにブロックを渡す時の書き方が変だ
型を宣言しないといけないのか
この辺慣れないとなー

309:デフォルトの名無しさん
14/06/05 01:09:22.54 /T91KtMA
>>302
URLリンク(github.com)

あれ?これとは違うの?

310:デフォルトの名無しさん
14/06/05 01:11:14.23 wJ9V7wb/
メソッドだけならObjCにもカテゴリがある

311:デフォルトの名無しさん
14/06/05 01:16:01.21 fuD6ulgX
appleってこういうの多いな
URLリンク(swift-lang.org)
URLリンク(en.wikipedia.org)(parallel_scripting_language)

URLリンク(developer.apple.com)
URLリンク(en.wikipedia.org)(programming_language)

>Looking for the Swift parallel scripting language? Please visit URLリンク(swift-lang.org)
って書いてあるぐらいだから話つけてるんだと思うが

312:デフォルトの名無しさん
14/06/05 01:26:48.29 QKn3CV7z
SwiftスレはあるのにObjectve-Cのスレがないのはなんでや。オワコンなんか

313:,,・´∀`・,,)っ-○○○
14/06/05 01:28:19.41 3JZcEM9N
Mac板の「Cocoaはさっぱり!!!」が本スレ

314:デフォルトの名無しさん
14/06/05 01:34:40.45 wuUUC+ej
そのCocoaはさっぱりもなくなってたお(´・ω・`)

315:デフォルトの名無しさん
14/06/05 01:35:43.21 /T91KtMA
Wikipediaのは、Chris Lattnerが言及してるからみたいだけど、この人は誰だ!

mentioned directly by Chris Lattner, who specifically calls out "Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, and far too many others to list"

- See more at: URLリンク(glaforge.appspot.com)

316:デフォルトの名無しさん
14/06/05 01:38:17.57 /T91KtMA
URLリンク(en.wikipedia.org)(programming_language)
wikipediaに、Chris Lattnerってちゃんと書いてあった。

317:デフォルトの名無しさん
14/06/05 01:43:24.87 mHl+sgam
2010からswift開発始めて、Rustが登場したのは2012年だけど、かなり影響うけてるのか。

318:デフォルトの名無しさん
14/06/05 01:46:18.29 2XZ0moAz
>>311
IT系で人気の名前なんだな

319:デフォルトの名無しさん
14/06/05 01:48:51.79 /T91KtMA
現在のApple WWDCアプリがSwift製だそうな。

320:デフォルトの名無しさん
14/06/05 04:37:27.76 wxkXNxXK
きめぇw
URLリンク(image.itmedia.co.jp)

321:デフォルトの名無しさん
14/06/05 04:40:05.58 82BFuaye
もうアップルの頭の中は
中共>日本なんだな

322:デフォルトの名無しさん
14/06/05 04:46:04.60 fa/xOZ3s
昔はコンピュータに中国語や韓国語があると
ウィルスに感染したか!?くらいのイメージだったもんだが、
いつの間にかプレゼンスを奪われましたね、日本。

323:デフォルトの名無しさん
14/06/05 04:50:03.37 Iunw+H6u
なぁ、なんでconstがletなんだ?

324:デフォルトの名無しさん
14/06/05 04:54:18.65 ItySY5z9
これか
無線LANルーター更新でウイルス バッファロー
URLリンク(www.chunichi.co.jp)
 パソコン周辺機器大手のバッファロー(名古屋市)がホームページで掲載していたプログラムが改ざんされ、
更新などのためにこれをダウンロードするとウイルスに感染する状態になっていた。
感染したままインターネットバンキングを利用すると、IDやパスワードが漏れる恐れがある。

 同社によると、5月27日午前6時すぎからの約7時間にわたり、
同社の無線LANルーターや外付けハードディスクなどをパソコンで使用するために使う10のプログラムに、
ウイルスが混入していた。発覚後、サービスを停止したが、856件のダウンロードがあったという。

 27日午前10時ごろ、利用者から「プログラムを実行したら、中国語のメッセージが表示された」という連絡があり、発覚した。

(後略)

325:デフォルトの名無しさん
14/06/05 04:57:52.99 8eoXOyJj
>>323
rustの影響かな?

326:デフォルトの名無しさん
14/06/05 06:58:50.41 mQa+SLGK
C++そのまま呼び出せんのかな?
いつもOS依存箇所だけはObj-Cで書いて、それ以外はC++でコーディングしてた

327:デフォルトの名無しさん
14/06/05 07:18:35.52 XqFykZgR
>>326
C++は流石に無理。CかObj-Cでラップしないと

328:デフォルトの名無しさん
14/06/05 07:28:04.45 pksLVqXr
letとか分かりにくいな。constとかfinalはfixがいい

329:デフォルトの名無しさん
14/06/05 07:30:14.84 OarRmHyJ
let は恥ずかしくて使えないな

330:デフォルトの名無しさん
14/06/05 07:52:58.14 XFIZn5Ul
>>326
受口をextern "C"しておけばそのまま呼び出せるでしょ。
今までもObjective-C++として使ってなかったのなら、そうしてたはず。

331:デフォルトの名無しさん
14/06/05 08:01:26.50 OarRmHyJ
中江有里

332:デフォルトの名無しさん
14/06/05 08:51:39.10 BcBKMn/M
let s = 'go'

333:デフォルトの名無しさん
14/06/05 08:55:02.24 v0mN5gE+
let it = 'go'

334:デフォルトの名無しさん
14/06/05 08:59:59.18 23MIBYyX
>>278 まさにコンピュータ教育を意識して作ったらしい。

Apple's top secret Swift language grew from work to sustain Objective C, which it now aims to replace

URLリンク(appleinsider.com)

Swift の考案者は、LLVM創設者の Chris Lattner だそうだ。

documentation guru と同様に compiler optimization ninja と言う言葉が使われてるのは面白い。 それと dogfooding group
(テストグループ)とか、いつも内部で使ってるんだろうな。

すごく面白いから一読を勧める。
特に
Swift's Interactive Playgrounds & REPL

"I hope that by making programming more approachable and fun,
we'll appeal to the next generation of programmers and to help redefine how Computer Science is taught," Lattner stated.

Apple notes that the REPL debugging console in Xcode "includes an interactive version of the Swift language built right in.
Use Swift syntax to evaluate and interact with your running app, or write new code to see how it works in a script-like environment."

335:デフォルトの名無しさん
14/06/05 09:20:29.95 XW7Omk0c
>280
ドキュメントのソース部分以外ほとんど見てないから想像だが
export で指定したものが他のモジュールから見えるのだと思われる
デフォルトが private で export で指定したものだけ public ?
C言語や関数型の言語と同じような指定の仕方か

環境使える人詳しく教えて

336:デフォルトの名無しさん
14/06/05 09:28:26.87 23MIBYyX
>>282 出来るだろ。  >>293 0 じゃなくて NULL と同じ
>>323 >なぁ、なんでconstがletなんだ?
let j = i
と言う使い方も有り、必ずしも定数とは限らないから。 これ以降変化しないよと言う定義。

337:デフォルトの名無しさん
14/06/05 11:02:18.15 oKmamV8t
let j = i って英語だとどういうニュアンスなんじゃろ

338:デフォルトの名無しさん
14/06/05 11:24:31.82 fhxWm8Xr
単純にiをjにするってニュアンスじゃないの?

直接的には、iがimmutableってニュアンスは無いと思うけど、
いまはimmutableな変数をなるべく使うべしって流れがあるからletにその役目を与えて、
mutableには別のvarって構文を用意したと

Rustはimmutableもmutableもletで宣言するけどデフォルトはimmutableで、
mutableな変数を定義するときにはlet mutとかするねえ

339:デフォルトの名無しさん
14/06/05 12:46:01.63 VmoRAZhY
letは値や式に一時的に名前を付けるイメージじゃないかな。数学で言うところの~と置く、みたいな。letって言葉を使ってるのはHaskellとかの関数型言語に合わせたんじゃないだろうか。
varはvariable=変数=変化するもので、容れ物や箱やメモリそのものみたいなイメージ。
mutableかimmutableかの違いだけにみえて、内部実装的にもかなり取り扱いが違うんじゃないかと予想。

340:デフォルトの名無しさん
14/06/05 13:01:00.00 /748C5a2
letはBASICの代入文を思い出す

341:デフォルトの名無しさん
14/06/05 13:01:33.97 /lL990/k
日本のプログラミング教育はSwiftでいいんじゃね
世界でiPhoneシェア一番高い国だし

342:デフォルトの名無しさん
14/06/05 13:04:11.37 ICYd1xse
URLリンク(togetter.com)

>Swiftの関数はHaskell風。これはいい。マシン語が透けて見える。CPUの歓声が聞こえてきそうだ

343:デフォルトの名無しさん
14/06/05 13:07:28.65 23MIBYyX
Appleの新プログラミング言語、Swiftを使って半日くらいでFlappy Birdのクローンが書けた
URLリンク(jp.techcrunch.com)
以前の開発言語、Objective-Cに比べて、Swiftに新たに備えられた高度な機能がデベロッパーの生産性を大きく向上させるだろうという予測が実証されたかたちだ。

Murrayは実際に使ってみて「新しくiOSアプリの開発に取り組むプログラマーに対してハードルを下げる「というAppleの目標は達成されたと考えている。
Murrayによれば、Swiftの大きなメリットの一つはPlaygroundsと呼ばれる機能だという。
ここではコードを編集しながら、それが実際にどう動作するかをリアルタイムで見ることができる。

「4時間よりはかかったが9時間まではかかっていない。ログによると空のフォルダーからデモが作動するようになるまで9時間近くかかっているが、その間に食事もしたし、子供を寝かしつけたりしていたのでね」と語った。

ソースコード
URLリンク(github.com)

344:デフォルトの名無しさん
14/06/05 13:11:20.47 fhxWm8Xr
>>343
まだシンタックスハイライト対応してないのかwがんばれGithubちゃんw

345:デフォルトの名無しさん
14/06/05 13:41:38.15 5c6Sl3cl
多分constじゃないのはletが代入の可否を返す式だからだと思うよ
if let it = go {it.foo()}(実質「goがnilじゃない場合foo()を実行」と同義)
みたいな使い方するみたいだし

>>267
言語的に特別扱いしないでC言語周りが使えるのは何気に凄いな

346:デフォルトの名無しさん
14/06/05 14:00:04.98 epSx9FaU
ifの比較と代入間違える凡ミスをなくすための
let強制だとしたらいくらなんでもやり過ぎだな

347:デフォルトの名無しさん
14/06/05 14:01:03.50 fhxWm8Xr
>>345
letが値を返す式というわけじゃ無いと思うが自分は確かめるすべが無い
Language Reference見る限りifの次に式か宣言の両方が書けるということになってる

let ~は宣言で、宣言は式じゃないから
let a = let b = 0
みたいには書けないんじゃないかな?

348:デフォルトの名無しさん
14/06/05 15:40:25.97 MTRKCqc9
オブジェクト指向は愚かな考え。
スレリンク(tech板)

349:デフォルトの名無しさん
14/06/05 15:41:28.90 N9ZszDAJ
要するにいろいろパクってみたが、
何のための言語がよく分らないものができたってかんじか。

>非常に軽快に動くことが特徴であり、

特徴でもなんでもないし。

350:デフォルトの名無しさん
14/06/05 15:48:43.38 23MIBYyX
>>349 どこが?

351:デフォルトの名無しさん
14/06/05 15:53:18.65 bTGozmC4
4月にDevProgram切れたの放置してたけどSwiftだけやってみてえ……7800円払うのは負けだよなぁ……

352:デフォルトの名無しさん
14/06/05 15:59:18.60 N9ZszDAJ
>>350
おまのレスを読んでもガッカリ感しか感じない。
JavaやC#を超える衝撃的な「何か」はないのか?

353:デフォルトの名無しさん
14/06/05 16:04:29.96 /lL990/k
つ 驚き最小の原則

354:デフォルトの名無しさん
14/06/05 16:14:34.40 VmoRAZhY
パラダイムを変革するとか新しい考え方を導入するとか考えてないと思う。
OSXやiOSで開発する上で必要なものや便利なものをまとめ上げた言語だと思う。
考え方としてはDSLにちかいんじゃないかな。

355:デフォルトの名無しさん
14/06/05 16:17:17.84 XqFykZgR
Cの関数を簡単に呼べるのが凄いわ

356:デフォルトの名無しさん
14/06/05 16:19:40.60 7wqllzhY
つまり30~40年後に Swift 老害としてCOBOLerのような地歩を固めるのだ

357:デフォルトの名無しさん
14/06/05 16:19:51.45 N9ZszDAJ
むしろ呼び出したくないだろ。
コードにCのprintfが混ざってるなんて勘弁してくれ。

358:デフォルトの名無しさん
14/06/05 16:22:50.06 EQvmYwTS
Cのライブラリを利用できるんだぜ

359:デフォルトの名無しさん
14/06/05 16:25:17.28 X78aNysa
なんかprintfとかfprintfはどうやっても呼べないんだよね
あれって実体がマクロだったりしたっけ

360:デフォルトの名無しさん
14/06/05 16:30:26.15 sui12ysr
利点はわりとフツーの字面で
iナンタラの開発ができるということに尽きるのではなかろうか
objective-cなんか使わされるよりははるかにましな気が

361:デフォルトの名無しさん
14/06/05 16:32:44.37 EQvmYwTS
>>359
可変長引数だめなんか

362:デフォルトの名無しさん
14/06/05 16:39:16.44 N9ZszDAJ
ObjectiveCなんか使わずに初めからC++採用してればよかったんだよ。

363:デフォルトの名無しさん
14/06/05 16:48:43.10 X78aNysa
>>361
NSLogは使えるんだよねえ

364:デフォルトの名無しさん
14/06/05 17:00:29.40 ssQRlflZ
xcode6だけ早いとこ正規リリースしてAppStoreにあげてくれないかな
iOS8向けの開発をSwiftでやりたいがベータ版の開発環境は使いたくない

365:デフォルトの名無しさん
14/06/05 17:03:54.12 sui12ysr
セミコロン省略可はいいね
この銀河系に存在する全言語で採用して欲しい

366:デフォルトの名無しさん
14/06/05 17:15:14.85 2XZ0moAz
隣の銀河系のことも考えてやれ

367:デフォルトの名無しさん
14/06/05 17:20:36.18 bTGozmC4
>>365
そうなると逆に複数行にわたって1つのstatementを書きたい時はどうなるんだ?
シェルみたいにバックスラッシュで連結かなあ?
semicolon省略に関する記述と、1行に複数statementの時はsemicolon要るって記述は見つけたんだが……

368:デフォルトの名無しさん
14/06/05 17:23:07.17 7wqllzhY
省略可じゃなくて禁止にすべき
>>343 とかまだらに残ってて笑った

369:デフォルトの名無しさん
14/06/05 17:24:53.47 U2o1cB0T
>>367
試したところスペースが入りうるところでは任意に改行できるみたい
改行前のバックスラッシュはエラー

370:デフォルトの名無しさん
14/06/05 17:26:49.78 bTGozmC4
>>369
それ、構文的にstatementの終わりかどうかを判別できてるってことだよね?
だったら、1行に複数statement入れた時も、判別できるからsemicolon不要だと思うんだが……

371:デフォルトの名無しさん
14/06/05 17:28:38.98 D0EgXF03
どんだけ読みにくいソース書きたいんだよ!

372:デフォルトの名無しさん
14/06/05 17:29:14.79 U2o1cB0T
>>367
consecutive statements on a line must be separated by ';'
というエラーが出るから、構文の区切りは判断してるけど可読性のためにセミコロンを明示的に入れよ
というルールにしていると思われる

373:デフォルトの名無しさん
14/06/05 17:36:11.09 3dO8/iia
Swiftってメソッド名を取得するようなプリティーなファンクションある?

374:デフォルトの名無しさん
14/06/05 17:36:25.69 bTGozmC4
>>372
それなら、複数行のstatementがどこで終わるかわかりにくいから
可読性のためにsemicolonを入れて欲しいよ……
何か気持ち悪いなぁ

375:デフォルトの名無しさん
14/06/05 17:46:41.07 XqFykZgR
>>374
セミコロン入れたいのなら自分で書けば良いだけだろ
変なこと行ってるぞお前

376:デフォルトの名無しさん
14/06/05 18:00:43.18 hxrPvcfi
>>362
OS X が BeOS だったらそうなっただろうね。NeXT になったから ObjC。
NeXT は Apple から追い出されたジョブスが Machintosh の有力開発環境だった Smalltalk に親しんでいたから inline Smalltalk を書ける ObjC。
そういう歴史。

>>372
これも Smalltalk からの歴史。Smalltalk ではコロンでは無くて . だけど。
ちなみにどっかの論文で、BASIC や Smalltalk のようなセパレータタイプよりも、C のターミネータタイプの方が学習が容易で間違いが少ないという実験があった。

377:デフォルトの名無しさん
14/06/05 18:01:35.29 Ss1X6IjI
例えばこんなワンライナーで

var a = rand() var b, c: Int? b = a % 20 > 10 ? 10 : 20 c = a > 10 ? b : b! + 20

ぱっと見で瞬時にセンテンスの区切りが分かるならセミコロンはいらんだろうな

378:デフォルトの名無しさん
14/06/05 18:08:39.95 bTGozmC4
>>375
いやいや、必須になってるのと任意になっているのでは「他人のコードを読む」ときの
可読性が違うから気にしてんだよ。自分のコードなら入れるって。

1行に複数statementの時は「必須」だから文の切れ目がわかるけど
複数行に1statementの時は「任意」っぽい(?)からわかりにくく「書ける」ってこと。

379:デフォルトの名無しさん
14/06/05 18:15:14.57 Ss1X6IjI
複数行に1statementの時に終わりが分かりにくいってことはないと思うぞ
そんなに分かりにくかったら空行なりいれればいいわけだし

380:デフォルトの名無しさん
14/06/05 18:22:25.93 bTGozmC4
>>379
だから、自分で書くんだったら注意するって。
実際に見てみたらわかりにくくないってことないのかなぁ?
まぁ、当面はXcodeしかコーディング環境がないからXcodeが上手いこと見せてくれれば問題ないか

381:デフォルトの名無しさん
14/06/05 18:36:08.42 fhxWm8Xr
>>380
複数ステートメント1行セミコロン無しでわかり難い例は>>377にレスしてくれてるんだから、
1ステートメント複数行でわかり難い例ってのを具体的に書いてみたら?

382:デフォルトの名無しさん
14/06/05 18:44:38.48 U2o1cB0T
Swiftはlongがない代わりにintの長さがマシン依存だからいやんなことになりそう

383:デフォルトの名無しさん
14/06/05 18:52:06.49 fhxWm8Xr
長さに依存するような整数はInt64とかInt32みたいに書けばいいんじゃないか?

384:デフォルトの名無しさん
14/06/05 18:55:52.22 k17DeP1N
そういやMacはもう64bit環境しかないな。
iOSの方は5sのみ64bitで後は移行中だけど

385:デフォルトの名無しさん
14/06/05 18:56:05.34 U2o1cB0T
OSXのC処理系はILP32 or LP64だから、何となく

386:デフォルトの名無しさん
14/06/05 18:58:38.99 XqFykZgR
C書いてるときには、関数内で特定の処理の塊を { } で囲んでコメント付けたりしてたんだが、
こういうことを Swift では出来なくなったみたいだな。
{} がクロージャとして認識されるから。

387:デフォルトの名無しさん
14/06/05 19:09:55.48 OzgJ1p8p
文末記号が無い言語は解析ルール次第で出来ることが変わるから信用できない
VB9なんかは多項式の途中で改行するとエラーになったりして救えなかった

388:デフォルトの名無しさん
14/06/05 19:24:02.90 fhxWm8Xr
>>386
そういうのは関数内で関数定義して呼び出しちゃえばいいんじゃない?
コンパイルされるコードは最適化されちゃって変わんないと思うよ

389:デフォルトの名無しさん
14/06/05 19:24:35.64 fhxWm8Xr
>>387
解析ルールは明示されてるよ

390:デフォルトの名無しさん
14/06/05 19:25:14.43 bTGozmC4
>>381
こ、こんなのであってますか……言語仕様もいまいち分かってなくて
コンパイル通るかもわかんないけど……

var hogehoge = "hogehoge"
var a : Boolean = let b :
Integer = 0b11110000 && let
hogehog = "gehogeho"

391:デフォルトの名無しさん
14/06/05 19:26:21.05 bTGozmC4
そもそも、IntegerもBooleanも違うかったわ

392:デフォルトの名無しさん
14/06/05 19:34:00.01 XqFykZgR
お前、言語仕様も分かってないのにグダグダ言ってたのか

393:デフォルトの名無しさん
14/06/05 19:39:35.40 /lL990/k
>>390
2行目の b と : の間で文法エラー

394:デフォルトの名無しさん
14/06/05 19:40:36.38 fhxWm8Xr
>>390
なんかめちゃくちゃだと思うが、
式の途中で改行とかすれば次の行の先頭にインデントとか入るだろうから
行の初めが前の行から継続してるかどうかは自明になると思う

395:デフォルトの名無しさん
14/06/05 19:49:48.50 18Wy6DPo
どーせ瑣末な文法で躓くんだから、c++使い続けたらいいのに

396:デフォルトの名無しさん
14/06/05 19:51:30.46 bTGozmC4
>>392
( ̄Д ̄)ノ オウッ すまんの試す環境がないから
さっき聞いたスペースが入るトコはどこでも改行できるって話を元に考えただけだし
IDEでのフォーマットはない前提な
型の名前が間違ってるのは愛嬌で許してくれよ

>>393
型との間の:は空白を許さないの?それとも型とコロンの間の空白はきっちゃダメ?
後、letで代入する値が変数じゃなくてリテラルの場合は常にtrueだから
もしかしたら怒られる?それとも単に最適化でtrueに変換されるだけかな?

試したい……

397:デフォルトの名無しさん
14/06/05 19:55:14.22 fhxWm8Xr
>>396
IDEのフォーマットが無い前提って、インデント無しのコードを読めってこと?
そんなの問題外じゃない?

あと、letがBooleanを返す?って他でも書いてる人がいるから調べてるんだけど、
どこかのドキュメントに書いてある?

398:デフォルトの名無しさん
14/06/05 19:58:17.00 /lL990/k
if let a = b {
}

って書き方できるから勘違いしてるんだろう
letがBool返すわけではない

399:デフォルトの名無しさん
14/06/05 20:11:52.36 bTGozmC4
とりあえず実物触るまでは全て杞憂らしいことが何となく納得。
if let a = b は The Swift programming languageの頭の方のControl Flowの節で出てて

“If the optional value is nil, the conditional is false and the code in braces is skipped.”

抜粋:: Apple Inc. “The Swift Programming Language”。 iBooks. URLリンク(itun.es)

ってなってるから、condition is "false" って値が取れると思ってた。ってか、取れないんだ?
複数の値のnil値判断を&&で出来ると思ってた。

400:デフォルトの名無しさん
14/06/05 20:25:51.95 Ss1X6IjI
var i: Int? = 10
if i {
 println("i = \(i)")
}

はオッケー

var i: Int = 10
if i {
 println("i = \(i)")
}

はアウト~

401:デフォルトの名無しさん
14/06/05 20:35:36.13 bTGozmC4
>>400
つまり?のついている値が"optional"ってマークされてるものの値を評価してるわけだ。
letの返値じゃなくて、代入された値を評価してる、と。
"optional"な値の場合は、nilはfalse、nil以外がtrueとして評価される、と?
"optional"じゃない場合は、条件式で利用できない……か。

402:デフォルトの名無しさん
14/06/05 20:48:52.91 q+iSb4xf
Swiftってアップル製品の環境でしか動かないの?

403:デフォルトの名無しさん
14/06/05 20:50:04.79 N9ZszDAJ
MSがWindowsで動くようにしたらAppleはいつものようにすぐ訴えるし。

404:デフォルトの名無しさん
14/06/05 20:53:59.72 DVEEJUDF
記念カキコ

405:デフォルトの名無しさん
14/06/05 20:57:26.27 D2wOjwoR
クラス内の変数は全部パブリックになってしまうん?

406:デフォルトの名無しさん
14/06/05 21:07:17.88 23MIBYyX
>>397  let a=b のb が値を持つかどうかの判定でBooleanを返すと有るね。

The Basics の Optional Binding
You use optional binding to find out whether an optional contains a value
if let constantName = someOptional {

元々 if a=b をエラーにするから、代入兼判定としてletを使うようにしたと言う事だろうけど。

407:デフォルトの名無しさん
14/06/05 21:20:07.46 Ss1X6IjI
憶測が多いな
別にletじゃなくてvarでもいいんだけど

var a: Int? = 10
if var b = a {
println("b = \(b)")
}

408:デフォルトの名無しさん
14/06/05 21:51:22.48 qTkh2drY
swiftのarrayってlet&unshareで使うのがいいのかな??
appendした後の挙動がバグ臭プンプンする。

409:デフォルトの名無しさん
14/06/05 22:04:27.80 bTGozmC4
>>407
大事なのは Int? の ? だと思うんだが。?のついている型だけが代入時のnil判定に使えるということじゃないの?
>>408
後ろはNSMutableArrayじゃなさそう?

410:デフォルトの名無しさん
14/06/05 22:08:28.49 ZaCMtfJy
C++のboost::optionalよりよさげ?

411:デフォルトの名無しさん
14/06/05 22:23:42.09 qTkh2drY
>409
“Assignment and Copy Behavior for Arrays”を読んで欲しいんだけど、
var listA = [1,2,3]
var listB = listA
listB[0] = 9
ってするとlistA[0]も9になってる。
まぁこれは普通だよね。

だけどこのあと
listA.append(4)
って要素数が変わる操作をしたら
listA[1] = 22
ってしても listB[1] は2のまま。
分かっててもミスりそう。

412:デフォルトの名無しさん
14/06/05 22:32:28.70 bTGozmC4
>>411
これはトラップ過ぎるwwww
funcに引数で渡されてきたArrayはどういう扱いなんだろう?
要素追加した瞬間にcopyされて別物か?

413:デフォルトの名無しさん
14/06/05 22:33:26.53 Ss1X6IjI
>>411 ディクショナリだとまた挙動が違うんだよな

var dictA = [0:1, 1:2, 2:3]
var dictB = dictA
dictA[0] = 9

ってやると、dictA[0]は9になるけど、dictB[0]は1のまま

414:デフォルトの名無しさん
14/06/05 22:39:53.87 O/ymbC/3
Optionalの説明はココが分かり易かった
URLリンク(blog.livedoor.jp)

415:デフォルトの名無しさん
14/06/05 22:42:40.01 qTkh2drY
>>413
arrayもdictionaryもstructureなんだからdictionaryの動作が正しいよね。きっと。
arrayのはパフォーマンス上げるためなんだろけどunshareを標準にして欲しい。

>>412
>要素追加した瞬間にcopyされて別物か?
明日試してみるよ


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