トップページ⇒tech
1001コメント338KB

Swift part2

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2014/06/11(水) 14:42:15.02ID:+13mKJ0Z
WWDC2014で発表されたAppleの新言語Swiftについて語りましょう

Apple Developer
https://developer.apple.com/swift/
Welcome to Swift
https://developer.apple.com/library/prerelease/ios/referencelibrary/GettingStarted/LandingPage/
iBooks: The Swift Programming Language
https://itunes.apple.com/jp/book/swift-programming-language/id881256329?mt=11
書籍の形にはなってないけどドキュメント
The Swift Programming Language
https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/index.html#//apple_ref/doc/uid/TP40014097
Using Swift with Cocoa and Objective-C
https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/index.html#//apple_ref/doc/uid/TP40014097
今のところbeta版のXcode 6がSwift対応らしい
https://developer.apple.com/xcode/downloads/

関連スレ
TypeScript(MS) VS Swift(Apple)
http://peace.2ch.net/test/read.cgi/tech/1401758403/

前スレ
Swiftスレ
http://peace.2ch.net/test/read.cgi/tech/1401736341/
0310デフォルトの名無しさん2014/07/01(火) 21:24:35.06ID:/YDQ45k+
>>309
いや、おそらくdeprecatedの嵐はいよいよ激しくなるんじゃねーの?
当分はSwift自体の拡張や仕様変更も相当あるだろうし
CocoaもSwiftベースに書き換えられるんだろうから。

もともと建て増し建て増しでどうにもならなくなったObjC2.0じゃ
この先進化のさせようがないってんでSwiftに乗り換えることにしたんだろうし。
0311デフォルトの名無しさん2014/07/01(火) 21:26:59.14ID:B592/H3e
勘弁してくれ
0312デフォルトの名無しさん2014/07/01(火) 21:30:55.29ID:oY1WpWsO
新しいことを学び続ける気力を失った瞬間が、そいつにとってのいわゆるプログラマ○才定年説というやつだろう
0313デフォルトの名無しさん2014/07/01(火) 21:39:04.99ID:B592/H3e
Deprecatedは、新しいことというより、初期設計時の先見性の無さの現れだろ
0314デフォルトの名無しさん2014/07/01(火) 21:56:32.31ID:pwV/PQsP
発表では乗り換えるなんて言ってないのになんでこの人の頭の中では乗り換える事になってんの?
0315デフォルトの名無しさん2014/07/01(火) 22:05:25.96ID:/YDQ45k+
>>314
Appleは乗り換えるとは言ってないけど、将来的には乗り換えるつもりだろうと思っているよ。
二つの言語を同水準でサポートし続ける理由がないし、
ObjCをこの先もずっとサポートしていくつもりならわざわざSwiftを導入して
移行に伴う混乱を誘発する理由もないから。

Appleが何も言っていない以上は違う意見の人を説得できるとは思ってない。
乗り換えるなんてことはありえないと思うなら俺とは前提が違うってことだね。
0316デフォルトの名無しさん2014/07/01(火) 22:17:11.06ID:l9yjQtpJ
かつてのCocoa-Javaが消え去ったように、Objective-Cも消え去るのだろう…。
0317デフォルトの名無しさん2014/07/01(火) 22:18:26.53ID:fEVjLc77
>>316
それ……消えるの……Swiftになるフラグ……
0318デフォルトの名無しさん2014/07/01(火) 22:27:11.00ID:B592/H3e
MacOSもiOSも既存のほとんどのフレームワークもObj-Cで書かれてんだろ?
Obj-Cを切り捨てるってことは今後最低でも10年は無いと思うけどね
C言語の構文やデータ構造がそのままの文法で書けるってだけでも価値がある
Appleがらみのライブラリだけでなく、Unixの膨大なライブラリもあるし
WWDCでも、Obc-Cの既存コードをSwiftで書き換えることはお勧めしないって言ってたし
それやるなら既存コードはそのままにして、新機能だけSwiftで書けって言ってたし
今の所はまだObj-Cが消える可能性より、Swiftが残る可能性の方があやしい
Appleがやっぱやめましたって言う可能性もあるし、ユーザーがついてこなくて自然消滅の可能性だってある
0319デフォルトの名無しさん2014/07/01(火) 22:40:41.30ID:FsIt2ttm
ID:B592/H3e あぼ〜んしたらすっきりした。

Object-Cと言う言語が消える事は無いが、ライブラリなど徐々にSwiftに移行していくだろうな。
当然の流れ。
今後のSwiftは言語の若干の手直し(拡張)とライブラリ群の整備だろうな。
0320デフォルトの名無しさん2014/07/01(火) 22:47:36.43ID:/YDQ45k+
>>318
ああ、俺もあとどれぐらいでObjCが消えるかなんて分からない。
10年より先かもしれないしもっと早いかもしれない。
今後の情勢次第でSwiftが消える可能性があるだろうと言われればそうかもしれないとしか言えない。
少なくとも現時点のAppleは、いずれ乗り換えるつもりでSwiftを発表したんだろうと思うというだけ。

あとWWDCで既存コードの書き換えが推奨されないというのは俺も知ってるけど
似たような話はretain/releaseを手動でやってるコードからGCへの移行でも言われていた。
「今問題なく動いているものをいじるな」というだけの話で、
AppleがObjCとSwiftを今後どうするつもりかという話とは関係ないと思う。
0321デフォルトの名無しさん2014/07/01(火) 22:51:53.67ID:l9yjQtpJ
>>318
>C言語の構文やデータ構造がそのままの文法で書けるってだけでも価値がある
これはほんとそうだよな
以前、Cでπの多倍長計算のコードを書いてたことがあって、それをCocoaアプリに
仕立て上げてみた時も、コアの計算アルゴリズムの部分はほぼファイルコピーで
UI部分だけObjective-Cで書いてアプリが出来上がったとき、Objective-Cの
素晴らしさを実感したことを今でも覚えてる

Cocoaは、最初Objective-Cって何だよっておもってCocoa-Javaから始めたくち
だったけど、Objective-Cが実はCなんだと(正確にはC+OOP)だと気づいたとき
一気に障壁が下がってそれ以降すんなりObjective-Cでコーディングできてた

Modernさという意味ではSwiftに劣るけど、やっぱObjective-Cが好きなのかも

.mファイルの中に、Cの関数とObj-Cのメソッドが並んでるコードは最初気持ち
悪かったけど、ある意味最も自然な形で拡張された素直な言語だなと思う
0322デフォルトの名無しさん2014/07/01(火) 23:08:31.21ID:yfeDN/3+
Swiftなんざ作るぐらいなら、素直にSmalltalk入れさせろよと思うがな。

#( 1 2 3 ) do:
[ :each |
].
Smalltalkなら20年前に出来てたこんな機能が、
Objective-C 2.0 で新機能扱いとかウンザリ。
0323デフォルトの名無しさん2014/07/01(火) 23:09:00.30ID:g+9FQYl7
俺は結構早めにSwiftに移行すると踏んでる。
iOS関連ってOSSが多くて(特にUI)、質も高い。
そして、OSS書いてる人たちが結構な割合で、少なくとも新規プロジェクトはSwiftで書くのではないかと思う。
0324デフォルトの名無しさん2014/07/01(火) 23:14:39.02ID:l9yjQtpJ
といいつつ、Objective-Cもすぐにはなくならなそうで少し安心したし、
おれもSwiftもちょっと嗜んじゃおうかなw
0325デフォルトの名無しさん2014/07/01(火) 23:21:33.88ID:Qf/S0Wzj
10年後も残ってるかどうかとか言うけどそれ全ての言語に言えるんじゃね
0326デフォルトの名無しさん2014/07/01(火) 23:23:50.43ID:B592/H3e
アクセス指定子も無いし、まだフレームワーク作りにはとっかかりにくいわな
Swiftで使う場合は、Obj-Cみたいにヘッダーだけ参照ってわけにいかないし
0327デフォルトの名無しさん2014/07/01(火) 23:24:59.14ID:tLoVbtUq
既存フレワとの互換レイヤ的なAPIやOSSがガンガン出てくるんじゃないの?
0328デフォルトの名無しさん2014/07/01(火) 23:28:23.59ID:l9yjQtpJ
今でもシェア高く実用されてるプログラミング言語で最も歴史のあるのってやっぱCだよね?
やっぱCってすげーって思う。それだけ蓄積されてる資産も大きいし
0329デフォルトの名無しさん2014/07/02(水) 01:50:36.64ID:gjMteLus
それはすごいことに気付きましたね
0330デフォルトの名無しさん2014/07/02(水) 03:22:32.57ID:0X8S8x1q
>>301
あのソース見て一日で書けたのはSwiftじゃなくてSpriteKitのおかげじゃんって思った
0331デフォルトの名無しさん2014/07/02(水) 05:58:15.54ID:wD3UzLWL
Cが残っているからObjCもアップル関係では残っていくのでは。
たぶん、Swiftでのみしか利用できない様々なAPIとか、環境とかがどんどん増えて自然にそっちに多数の人は誘導されてくんじゃないかな。
0332デフォルトの名無しさん2014/07/02(水) 07:18:04.99ID:Q2HfdUEv
>>325
Swiftの場合そもそもプラットフォームが残ってるのかという問題がなあ
iPhoneやMacが健在だとしても、もっとサーバーサイド比率が大きくなって
クライアント側は簡易なスクリプトが僅かに残ってるだけになってそう
0333デフォルトの名無しさん2014/07/02(水) 12:12:23.06ID:wD3UzLWL
まあ言えそうなのは、アップルの目論見くらいかなと。
0334デフォルトの名無しさん2014/07/02(水) 12:39:10.54ID:+LR919/Z
どうせリリースするなら、もうちょっとこなれてから出せよ
あと1年ぐらい待ってもよかっただろ
0335デフォルトの名無しさん2014/07/02(水) 12:43:55.14ID:W8x6b9d7
>>332
逆だろ
サーバ側はモデルに特化して、JSONだけ返す。
UIまわりはすべてクライアントサイドで実装が今の流れ。
0336デフォルトの名無しさん2014/07/02(水) 12:44:50.20ID:W8x6b9d7
>>334
実際にリリースしてから浮き彫りになる問題もある。
そんなこと言ってたらいつまでもリリースできない
0337デフォルトの名無しさん2014/07/02(水) 13:13:10.53ID:C0tb1eHd
Googleが、Java to Object-Cを出したり、iOS SDKを出したり攻勢に出てきているから守勢に回ったままではいけないから急ぐ必要があったんだろ。
Xamarinなどサードパーティーの開発ツールも台頭の兆しが有るからね。
急ぐ必要はないがSwing to Javaを出して反撃してほしい。
0338デフォルトの名無しさん2014/07/02(水) 13:19:16.62ID:DNTNWI96
敵はgolang
0339デフォルトの名無しさん2014/07/02(水) 14:04:29.37ID:C0tb1eHd
>>338 敵にはならないだろ。 何か違う所で踊ってるみたい。
golangは言語的には少し首をかしげる所が多い。
0340デフォルトの名無しさん2014/07/02(水) 15:23:20.05ID:7E/KXNMp
Object-Cやなくて、Objective-Cやで。プログラマなら間違えたらアカン
0341デフォルトの名無しさん2014/07/02(水) 16:47:11.64ID:3GppMyES
>>316-317
あれは面白いことにJavaじゃObjective-Cを代替するには役不足だったんで
サポート停止されたんだよなぁ。Swiftはそれを踏まえて作ってはいるみたいだし
0342デフォルトの名無しさん2014/07/03(木) 08:58:36.06ID:s8dcLjiN
>>341
「力不足」だよね?
0343デフォルトの名無しさん2014/07/03(木) 09:07:45.05ID:Q4dDnky3
誤用の指摘とかどうでもいいし
0344デフォルトの名無しさん2014/07/03(木) 13:00:11.80ID:ocaDq0om
>>341
赤っ恥www
0345デフォルトの名無しさん2014/07/03(木) 13:12:53.11ID:0tabs9DN
いや、誤用じゃないんでむしろ誤用だと思ってつっこんでる奴の方が…
0346デフォルトの名無しさん2014/07/03(木) 17:25:46.66ID:P7mc1MKH
>>345
必死だな。
0347デフォルトの名無しさん2014/07/03(木) 18:39:36.50ID:VyOuWYyM
2ch で誤字誤用の指摘をするのは恥ずかしいことだが、弁解や釈明や言い逃れをする恥ずかしさに比べれば無いも同然。
0348デフォルトの名無しさん2014/07/03(木) 18:57:04.96ID:bRkIiAVF
いや、バカが釣れるからどんどん指摘すべし。
0349デフォルトの名無しさん2014/07/03(木) 20:31:24.65ID:FhkBxcg0
javascriptive-cが最強だって
0350デフォルトの名無しさん2014/07/03(木) 20:41:48.37ID:ap5XVsa0
>>349
kwsk
0351デフォルトの名無しさん2014/07/04(金) 00:10:43.27ID:UzbhYlbZ
>>339
首を傾げるってどんなトコ?
個人的な使い勝手はJava超過Smalltalk未満なんだけど。
0352デフォルトの名無しさん2014/07/04(金) 00:37:01.19ID:msFVWI+x
>>351
Swiftはモダンで洗練されている、かつ大衆が好む言語
Smalltalkはモダンでもないし、大衆向けでもない。素晴らしいけどな

いいじゃん、個人的はって断わってるところ見ると自覚はしてるんだろ?
0353デフォルトの名無しさん2014/07/04(金) 01:39:34.04ID:Kc5FuQQY
現状swiftってDSLみたいなもんだし汎用言語と比べるのはあんまり意味がないんじゃね
0354デフォルトの名無しさん2014/07/04(金) 01:49:22.89ID:msFVWI+x
>>353
言いたいことは分かるが、SwiftはDSLでは無く汎用プログラミング言語な。
言語として汎用であるから、文法などを比較することに意味はあるよ
0355デフォルトの名無しさん2014/07/04(金) 09:35:51.65ID:ibPrybjY
>>345
じゃ、主張としては「JavaのほうがObject-Cより良い」ってこと?
だとしたら言い回しがおかしい
0356デフォルトの名無しさん2014/07/04(金) 10:35:40.73ID:55Iwzgg5
安定のゴミスレだな
0357デフォルトの名無しさん2014/07/04(金) 10:58:34.80ID:MI6unMOz
まーな
0358デフォルトの名無しさん2014/07/04(金) 20:11:26.61ID:ki9fyfkR
>>352
聞きたいのはswiftとgolangの批判だよ。
0359デフォルトの名無しさん2014/07/04(金) 21:06:13.84ID:AqR4CHdL
批判するなら「特に何も優れていない」ということに尽きるな
広く普及していて同じくらい優れた言語は既にたくさんあるわけで、
既存の言語じゃいけない理由がないならわざわざ新しく作るのはリソースを分断させるだけの迷惑行為だ
0360デフォルトの名無しさん2014/07/04(金) 21:07:23.38ID:RlFM+Deh
blub言語ってわけ
0361デフォルトの名無しさん2014/07/04(金) 21:36:09.61ID:UzbhYlbZ
>>359
非難じゃなくて批判(事実を突き合わせた上での判断)を聞きたいわけなんだが。
個人的な批判としてはgoのinterfaceと委譲は非常に出来が良かったと思う。
最もあのinterfaceは他の言語でsignatureとして実装されてたから、
真新しいものでも無かったんだけど。

それから、importの別名。これもC++なんかでusingとして
既に存在してた機能じゃあるが、
Javaなんかじゃ使えないからそれらの言語に比べりゃ便利だった。

goは全般的に実用的で、大半の言語よりは使い勝手が良い方だと見てる。
0362デフォルトの名無しさん2014/07/04(金) 21:54:25.59ID:PdXssMnS
>>359
既存の言語じゃいけないんじゃないの、アップルにとっては。

 ・Cocoaランタイムのネイティブコードを吐く
 ・アップルの意向でいつでも仕様変更できる

というニーズがアップルにはあるんだろうから、既存の言語で適当なのを見つけてくるのは大変だろうよ。
サードパーティにとって迷惑なのはわかるが、癖の少ない文法でまとめてくれたのは不幸中の幸いだわな。
0363デフォルトの名無しさん2014/07/04(金) 22:22:28.79ID:4r2s5G7/
なによりObjective-CやCとの相互乗り入れが出来る言語なんてApple以外が作る訳ないんだから、新言語以外は有り得ない。
将来を見据えた発展性のあるまとまった言語仕様だと思うよ。
まだ若干荒削りな所は有るけど整備されて行くだろう。
0364デフォルトの名無しさん2014/07/04(金) 23:34:18.36ID:6bXGoclV
どうせ1年か2年したらC/Objective-Cなんて切り捨てるだろうし互換性なんてどうでもいいだろ
パフォーマンス上げてついでにモダンにしたいんだったらC++でいいんじゃ?
オペレータオーバーロードも名前空間も型推論もクロージャもジェネリクスもあるし
0365デフォルトの名無しさん2014/07/04(金) 23:40:13.47ID:iKaePYIV
何をどうしたらそうなる。頭沸いてるのか
0366デフォルトの名無しさん2014/07/04(金) 23:57:02.00ID:BPBQ8Qlo
C++より後発でCと互換があって、より無難にオブジェクト指向的な拡張を施したがあるんだけどそれ使おうぜ
0367デフォルトの名無しさん2014/07/05(土) 00:20:46.36ID:pTDYhgjU
>>366 それでiOSアプリが開発できるなら使ってやるよ。
0368デフォルトの名無しさん2014/07/05(土) 00:28:00.53ID:3XcLVhBt
>>367
つまり今まで通りだな
0369デフォルトの名無しさん2014/07/05(土) 00:41:55.02ID:5PqNKKxq
>>361
go を批判/非難する気はないけど、
go が普及しないのは >>359 が書いているように
「既存の言語じゃいけない理由がない」からだろ
おまけに「全般的に実用的で、大半の言語よりは使い勝手が良い」程度の
利点しか無い、言い換えるとバランスのとれた優等生だけど個性が無い

GoogleがAndroidの開発言語として(Java ではなく) go を採用していたら、
状況は変わっていたかもしれない
ちょうど UNIX の開発言語として C が勝ち Pascal族を排除したように、
Rails の開発言語として Ruby が有名になり Python に影がさしたように ....
Google がそうしなかったのは、Microsoft が C# を必要とし
Apple が Swif を必要としたほどには、Go が必要ではなかったってことさ
0370デフォルトの名無しさん2014/07/05(土) 01:19:50.20ID:pTDYhgjU
>>368 iOS周りは殆どの開発者が早い段階でSwiftに移行していくぞ。
年末位には本格的になってくるだろう。 殆どの開発者が歓迎してる。
Obkective-Cだと敷居が高いけどSwiftなら始めてみたいと言う層も結構いそう。
これでMacの売り上げが上がるな。

言語間の構文比較 Swiftの軽さが際立つ。

Swift:--------
println("Hello, World!")

Go:----------
package main
import "fmt"
func main() {
  fmt.Println("Hello, World!")
}

Java:--------
class ArbitraryClassName {
  public static void main(String[] args) {
    System.out.println("Hello World!");
  }
}

Objective-C:----
#import <stdio.h>
int main( int argc, const char *argv[] ) {
  printf("Hello World!");
  return 0;
}
0371デフォルトの名無しさん2014/07/05(土) 01:30:17.23ID:Hq9eeGT6
>>370
メイン関数(メソッド)がない静的型付け言語って意外と少ないよな。大正義Scala先生もmainいるし。

形安全でサクサク開発という意味だと、1番いい言語化もしれない
0372デフォルトの名無しさん2014/07/05(土) 01:33:23.30ID:lG7Vks4t
いや、一行だけのプログラムで構文比較して軽いとかいうなよ
コードゴルフするわけでもあるまいし
0373デフォルトの名無しさん2014/07/05(土) 01:35:11.49ID:Hq9eeGT6
>>369
Goは元々システム向け言語だからな。AppEngineに採用されたり、Android上で(NDKとしてだっけ?)動かせたり、最近はアプリ向けにも動きがあるけど。

GoogleだとSwift的な役割な期待されるのは、Dartだと思う。JavaScriptの代替のイメージが強いが、開発担当によると、クライアント、サーバ両方で使える汎用言語目指しているらしい。
0374デフォルトの名無しさん2014/07/05(土) 01:36:50.25ID:Hq9eeGT6
>>372
最もミニマムなコードを比較することに意味はあるでしょ。だってそれ以上短くできないんだから。
そこに設計思想が現れるわけよ
0375デフォルトの名無しさん2014/07/05(土) 01:54:55.86ID:Mg3y7G5e
設計思想の嬌声が聞こえてきちゃうんですね
0376デフォルトの名無しさん2014/07/05(土) 02:20:02.33ID:pTDYhgjU
>>373 Dartは、あくまでもWebアプリ用だよ。
VMで実行するか、Javascriptに変換して実行するかの二つに一つ。
端末側アプリの開発用では無い。

端末は、Java, go
主流はJavaのままだろう。 Googleとしては、goに移行させたいかもしれないけど。
0377デフォルトの名無しさん2014/07/05(土) 02:28:47.28ID:Hq9eeGT6
>>376
まあこれ見てよ
http://m.jp.techcrunch.com/2014/07/01/20140629googles-dart-programming-language-is-coming-to-the-server/

GoはC/C++の置き換えを目指しているのではないかと思う。一般的な例外機構を採用しなかったり、パフォーマンスとコンパイル速度に重きを置いている。
AndroidのサポートがSDKではなくNDKだしね。

これ以上はスレ違いだからやめとくけど
0378デフォルトの名無しさん2014/07/05(土) 02:29:19.64ID:5PqNKKxq
>>373
>Goは元々システム向け言語だからな。

そう、ただし Go は GCとスレッドをサポートしているから、
C というよりも Java や C# (および Swift)と真正面から競合する言語だね
だから Google が Android というOS記述言語に Go を採用しなかったのは、
メジャーな 「Java(= Oracle)を排除できるほど Go には魅力(優位性)が無い」と
Google が戦略的に判断したからじゃないのかな

Google はWebサービスに関しては巨人かもしれないけど、
Microsoft や Apple と比べれば「OS ベンダーとしては後発」になる
Go が普及しないのは、生まれの不幸といえるのかもしれない
遠い将来、Android がスマフォ/タブレット市場を独占し、
Apple が離脱するような時代が到来すれば、Go に再び陽があたるかもね
0379デフォルトの名無しさん2014/07/05(土) 02:35:25.49ID:dvkFKgZc
これをSwiftに書き直したらどんな感じよ
type TinyOperation interface {
 MoveTo( target Point )
 LineTo( target Point )
}
type Operation interface {
 TinyOperation
 QuadraticBezierTo( target, control1 Point )
 CubicBezierTo( target, control1 control2 Point )
}
type OperationAdapterForTiny struct {
 TinyOperation
 /* その他略 */
}
func ( _ *OperationAdapterForTiny )QuadraticBezierTo( target, control1 Point ){ /*略*/ }
func ( _ *OperationAdapterForTiny )
CubicBezierTo( target, control1 control2 Point ) { /*略*/ }

type TinySVG{ /*略*/ }
func ( _*TinySVG )MoveTo( target Point ) { /*略*/ }
func ( _*TinySVG )LineTo( target Point ) { /*略*/ }

func Main() {
 path := &OperationAdapterForTiny{ /*略*/ }
 path.TinyOperation = &TinySVG{}
 path.CubicBezierTo( &Point{ 1, 0 }, &Point{ 1, 2 }, &Point{ 2, 2 } )
}
0380デフォルトの名無しさん2014/07/05(土) 02:40:10.84ID:765Tx3Gv
>>374
カップラーメン:お湯を注いで3分待つ
お店のラーメン:家から出て歩いて店行って食券買って待つ

ほらこのようにラーメンが出てくる待ち時間を比べたら圧倒的にカップラーメンが早い!(キリッ
こうですか?><わかりません><
なんで食券のとこから比べないんですか?
0381デフォルトの名無しさん2014/07/05(土) 02:52:36.64ID:oVhlbldd
>>379の補足。
>>379の要点は、TinySVGは移動と線分の描画しかできないが、TinySVGに
移動と線分の描画だけあればBezier曲線を描画できる
OperationAdapterForTinyを取り付けることでOperation型に
適合しているところ。
0382デフォルトの名無しさん2014/07/05(土) 03:25:44.93ID:5PqNKKxq
>>381
Swift を勉強したいのなら、まず自分でコードを書いてみるのがいいでないの?
他人にやらせるんぢゃなくて....
0383デフォルトの名無しさん2014/07/05(土) 19:27:50.62ID:b45VDszC
ちょっと以下のコードを見て欲しいんですが

var dict:Dictionary<String,String>? = Dictionary<String,String>()
dict["a"]="abc" //<--ここでsubscriptメソッドがないって怒られる

変数宣言の部分を変えずにどうすれば代入できるか教えてくださいm(_ _)m
0384デフォルトの名無しさん2014/07/05(土) 20:20:31.31ID:b45VDszC
>>383

すんません自己解決しました

var dict:Dictionary<String,String>? = Dictionary<String,String>()
var dict2 = dict!
dict2["a"]="abc"
0385デフォルトの名無しさん2014/07/05(土) 20:37:13.38ID:zVIhfQ1o
>>384
もともとのdictの方の値は変わらなくていいの?
0386デフォルトの名無しさん2014/07/05(土) 21:15:00.62ID:b45VDszC
>>385
参照渡しだと思い込んでました

var dict:Dictionary<String,String>? = ["aaa":"bbb"]
var dict2 = dict!
dict2["a"] = "abc"
dict = dict2

ってことですね
0387デフォルトの名無しさん2014/07/05(土) 21:20:56.81ID:zVIhfQ1o
オプショナルな配列やディクショナリはイミュータブルになるらしい。
だから、いったんアサインしたらもう要素の変更や追加は出来なくなる。
ディクショナリをどうしてもオプショナルな変数として使ってあとで要素を変更したかったら、つどアサインし直すしかない
0388デフォルトの名無しさん2014/07/05(土) 21:29:25.00ID:b45VDszC
>>387
なるほどー。納得しました。
ということはこういう挙動になるのは
String,Array,Dictionaryくらいってことですかね。
0389デフォルトの名無しさん2014/07/05(土) 21:41:09.53ID:zVIhfQ1o
>>388
Stringはそもそもイミュータブルだからあまり気にする必要はないと思うけど、ただアンラップは必要

var s: String? = "aaa"
s += "bbb" // ← これはエラー
s = s! + "bbb" // これはオッケー
0390デフォルトの名無しさん2014/07/05(土) 21:45:19.44ID:xdz/XkUa
最近は横文字がそのままカタカナになってる事が
多くて読みづらくて困る。ルー語じゃないんだから日本語にしてほしいなぁ。

任意型の配列や辞書は変更できなくなるらしい。
だから、いったん割り当てたらもう要素の変更や追加は出来なくなる。
辞書をどうしても任意型の変数として使ってあとで要素を変更したかったら、つど割り当てし直すしかない
0391デフォルトの名無しさん2014/07/05(土) 22:05:51.00ID:zVIhfQ1o
>>390
日本語の公式解説が無い今の時点で独自の和訳日本語を使うと後で混乱のもとになる。
任意型という表現が公式なものならいいが、そうでない場合、誤解を生む可能性がある。
あと、ディクショナリ、イミュータブル、アサインという言葉は、特にIT関係者の間ではもう十分に浸透してると思う。
イミュータブルを単に変更としてしまうと、changeやmodifyと勘違いされる可能性がある。
0392デフォルトの名無しさん2014/07/05(土) 22:08:12.01ID:lG7Vks4t
いっそ明らかに普及したものを除いて英単語そのまま書くのを押したい
0393デフォルトの名無しさん2014/07/05(土) 22:41:31.79ID:5PqNKKxq
>>391
>イミュータブルを単に変更としてしまうと、changeやmodifyと勘違いされる可能性がある。

ミュータブル(mutable)とイミュータブル(immutable)の日本語訳は、
昔からそれぞれ可変と不変だろ
ミュータブルを変更を訳す人が無知なだけ
>>390だって「もう要素の変更(update)や追加(add)は出来なくなる」と
解釈するのが普通だと思うけどね
0394デフォルトの名無しさん2014/07/05(土) 22:57:59.34ID:0zi9Gl/Q
ArrayとDictionaryって結構直感的でない所多いよなあ。
ま、DictionaryなどのコレクションはOptionalにしない方が良いだろうな。
0395デフォルトの名無しさん2014/07/06(日) 00:04:21.89ID:7pAe/j5J
>>393
意訳だから辞書通りじゃなくていいでしょ。
日本語で判ればいいのよ判れば。
あとupdateは変更より更新じゃない?
downdateできちゃダメだから。
0396デフォルトの名無しさん2014/07/06(日) 03:36:23.05ID:3qD8tN7V
Rubyで連想記憶のことをhashって名前にしているのはセンス悪いよね。
機能じゃなくて、それを実現しているアルゴリズムの名前付けちゃうのはだめって
カーニハン先生が言ってた
0397デフォルトの名無しさん2014/07/06(日) 03:50:44.25ID:fVlVkcLx
>>396
Rubyは例外処理もrescueだのensureだの変な名前つけるし、後発だから奇をてらいたかったんだよきっと
勘弁して差し上げろ
0398デフォルトの名無しさん2014/07/06(日) 04:04:37.77ID:GjvnhWDM
>>397
rescue ensuerはSmalltalk由来だよ。
ちょいちょいSmalltalk由来の用語や機能があって
年々その色が濃くなってる。
0399デフォルトの名無しさん2014/07/06(日) 04:10:19.27ID:GjvnhWDM
>>391
辞書、可変、不変、割り当てって言葉も十分浸透してると思うぞ。
0400デフォルトの名無しさん2014/07/06(日) 04:20:48.60ID:8W/9eoDc
カタカナで書くのは対訳のある単語とない単語が混ざってアレになるのを避けるためじゃね
それなら初めから全部カタカナで書いたほうが楽
0401デフォルトの名無しさん2014/07/06(日) 06:44:45.70ID:pBYyLByM
>>387
もうこれでいいや
optionalなarrayやdictionaryはimmutableになるらしい。
だから、いったんassignしたらもう要素の変更や追加は出来なくなる。
dictionaryをどうしてもoptionalな変数として使ってあとで要素を変更したかったら、つどassignし直すしかない
0402デフォルトの名無しさん2014/07/06(日) 08:56:57.09ID:wroK/xvX
OptionalもArrayもDictionaryも型名なんだから大文字含めてそのままでいいだろ
0403デフォルトの名無しさん2014/07/06(日) 12:18:34.54ID:vgKebaqN
同じ用語でも言語ごとに違いあったりするから型名やキーワードはそのまま使ったほうが無難といえば無難
0404デフォルトの名無しさん2014/07/06(日) 12:19:30.74ID:imSiv+lN
If you assign an array or a dictionary to an optional value, it will be immutable.
So once you assign a value to the variable, you can neither add nor update any items to the value.
If you want to use an optional value of that type and update the items of the value after it has assigned, you need to assign a new instance which include the new items every time.
0405デフォルトの名無しさん2014/07/06(日) 12:26:30.27ID:WD1US8Yy
英語読めないやつはSwift手出すの止めとけ
エロい人が日本語の解説本だすまで待て

トップを走りたいなら英語勉強しろ
0406デフォルトの名無しさん2014/07/06(日) 12:36:18.28ID:g9cBJIwi
やっぱ>>404か>>390のどっちかだな。
カタカナ英語は気持ち悪い。
0407デフォルトの名無しさん2014/07/06(日) 12:56:53.22ID:kiq0BT0K
プログラムを算譜、インターフェースを境界面とちゃんと訳す木村泉先生訳の
本でも読んで正しい日本語訳とか何かを考えろよお前ら
0408デフォルトの名無しさん2014/07/06(日) 13:43:23.01ID:MR0J7zgQ
収納的属性、電算的属性
0409デフォルトの名無しさん2014/07/06(日) 14:02:52.83ID:g9cBJIwi
変数
関数
参照
構造体

C言語の時代は良かったな
明治時代の魂が残ってた
■ このスレッドは過去ログ倉庫に格納されています