Swift part3
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2014/07/23(水) 11:46:48.42ID:x29J8vdYApple 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
Swift Standard Library Reference
https://developer.apple.com/library/prerelease/ios/documentation/General/Reference/SwiftStandardLibraryReference/
Swift Blog
https://developer.apple.com/swift/blog/
Resources (Xcode 6が無料でダウンロードできる)
https://developer.apple.com/swift/resources/
関連スレ
TypeScript(MS) VS Swift(Apple)
http://peace.2ch.net/test/read.cgi/tech/1401758403/
帰ってきた動的言語 VS 静的言語(代表Swift)
http://peace.2ch.net/test/read.cgi/tech/1401809550/
前スレ
Swiftスレ
http://peace.2ch.net/test/read.cgi/tech/1401736341/
Swift part2
http://peace.2ch.net/test/read.cgi/tech/1402465335/
0002デフォルトの名無しさん
2014/07/23(水) 12:01:12.75ID:rdKtmwhJ,,イ`" 、-' `;_' ' ..::::::::::::::...
,-、 _.._ ( (,(~ヽ'~ ..:::::::::::::::::::::::
)'~ レー' 〉 ヽ i`'} .:::::::::::::::::::::::
~つ '-ー、 i | i' ...:::::::::::::::::::::::
/ < / 。/ ! ......::::::::::::::::::::::::: これは>>1乙じゃなくて
/ ~^´ /},-'' ,●::::::::::::::::::::::::::::::::::::
i、 ,i' _,,...,-‐-、/ i :::::::: .:::::::::::::
..ゝ <,,-==、 ,,-,/ .::::::::::: 放射能がうんたら
) {~''~>`v-''`ー゙`'~ ..::::::::: ........::.
{ レ_ノ ..::::::::. ......:::::::::
ノ '' ..::::::: ...::.:...:::::::::
.::::::::: ...:......:::::::::::: .
.:::::::::::. ..... .. ..:::::::::::::::::::::::: :::.
::::::::::::::::.::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. :: ::..
.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::: ::.
::::::::::::::::: :::::::::::::::::::::::::::::: :::::
.:: ::. :::
0003デフォルトの名無しさん
2014/07/23(水) 12:01:26.09ID:xa9IqUVvプログラミング言語Swift
http://anago.2ch.net/test/read.cgi/mac/1401736921/
0004デフォルトの名無しさん
2014/07/23(水) 12:02:42.28ID:rdKtmwhJhttps://developer.apple.com/swift/blog/
Resources
https://developer.apple.com/swift/resources/
(Xcode 6が無料でダウンロードできる)
Swift Standard Library Reference
https://developer.apple.com/library/prerelease/ios/documentation/General/Reference/SwiftStandardLibraryReference/
0005デフォルトの名無しさん
2014/07/23(水) 12:04:02.20ID:rdKtmwhJ新言語Swiftを語るスレ
http://anago.2ch.net/test/read.cgi/mac/1401736249/
Wikipedia
Swift (プログラミング言語)
https://ja.wikipedia.org/wiki/Swift_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E)
0006デフォルトの名無しさん
2014/07/23(水) 12:12:58.20ID:xa9IqUVv0007デフォルトの名無しさん
2014/07/23(水) 12:46:53.59ID:rdKtmwhJhttps://itunes.apple.com/us/book/id881256329
0008デフォルトの名無しさん
2014/07/23(水) 13:18:52.66ID:xa9IqUVv0009デフォルトの名無しさん
2014/07/23(水) 16:58:45.20ID:x29J8vdYそのリンク >>1 に入れてあるから
0010デフォルトの名無しさん
2014/07/23(水) 20:23:53.00ID:UkE72Sh40011デフォルトの名無しさん
2014/07/23(水) 22:50:27.44ID:d4fKxbj7ibookも差分アップデートしてくれたらいいのに。
0012デフォルトの名無しさん
2014/07/26(土) 23:14:33.81ID:fwCKMr/Yなんだ RETURN って
0013デフォルトの名無しさん
2014/07/27(日) 02:36:22.52ID:1WIwg84iinit(_ : Int)
}
class Test0 : TestProt {
init(_: Int) { }
}
class Test {
init() { }
func test<T : TestProt> () -> T {
return T(0)
}
func test2() -> Test0 {
return test<Test0>() // <- Cannot explicitly specialize a generic function
}
}
なぜエラーが出るのか分からない
0014デフォルトの名無しさん
2014/07/27(日) 02:50:27.29ID:1WIwg84ireturn test() // これで良い
0015デフォルトの名無しさん
2014/07/29(火) 00:03:30.46ID:sbHfEaWW0016デフォルトの名無しさん
2014/07/29(火) 21:51:07.47ID:DxcW8iFRhttp://postd.cc/why-go-is-not-good/
・Goは何も新しいことをしない。
・Goは全てにおいてうまく設計されているとは言えない。
・Goは他のプログラミング言語から退化したものである。
要するに Google の新言語 Go への批判記事な訳だけど、
これらの視点を Swift にも当てはめてみよう
・汎用プログラミング(Generic Programming)
良い解決策:制約ベースの汎用プログラミングとパラメータ型多相
Swift => Haskell 等と同様に、パラメータ型多相による総称プログラミングが可能
(ただし、この著者は Haskell の型クラスと単なる明示的パラメタ型多相とを
ごっちゃに理解している可能性があるので、注意が必要と思われる)
・言語拡張性(Language Extensibility)
良い解決策:演算子は関数である
Swift => Haskell 等と同様に、演算子をオーバロード(多重定義)したり、
プログラマがカスタム演算子を定義することすら可能
・基本ケースおよびエラー状態(Base Cases and Failure Conditions)
良い解決策:代数的データ型と型安全なエラーモード
Swift => Haskell 等でいう代数的データ型に相当するenum型を提供し、
しかも独自(?)のOptional型まであるから、
ヌルポインタのバグにさよならを告げることができる
・型推論(Type Inference)
良い解決策:一般的な型推論
Swift => Haskell 等の関数型言語ほど完璧ではないが、実用レベルの型推論を提供
(長いので、一旦ここで切る)
0017デフォルトの名無しさん
2014/07/29(火) 22:04:22.69ID:DxcW8iFR・不変性(Immutability)
良い解決策:デフォルトで不変に設定する
Swift => すでに ObjC 時代から(NSArray と NSMutableArray のように)デフォは
不変性であると意識して設計されたライブラリが提供されていたのはもちろんのこと、
手続きの宣言時に可変性を明示的に mutating で指定する構文も可能になった
・制御フロー構造(Control Flow Structures)
良い解決策:パターンマッチングと複合式
Swift => Rust のmatch文と同様、Swift のswitch文では、enum型(代数的データ型)の
変数代入を伴うパターンマッチや範囲マッチ...etc を提供している
以降は「組み込みプログラミング(Embedded Programming)」における部分的課題
・部分的課題1:ヒープと動的割り当て(The Heap and Dynamic Allocation)
良い解決策:動的割り当てを選択制にする
Swift => メモリ制約の厳しい iOS 上では、GC の代わりに ARC が利用できます
・部分的課題2:危険な低級コード(Unsafe Low-Level Code)
良い解決策:危険なコードの分離
Swift => C言語の関数を透過的に呼び出すことができるので、
危険なコードをC言語コードとして分離することが容易(=現実的なコストで実現可能)です
記事と Swift との対比は、これで終わりです
こうしてまとめると、C#/Rust/Go から遅れること数年、満を持して Apple から新登場した
後発の Swift だけあって、いかにも他言語から「いいとこどり」した設計に見えてきます
ただし、それだけ冒険的な挑戦ですから、バグ取りにもしばらくの時間が必要でしょう
0018デフォルトの名無しさん
2014/07/29(火) 22:41:34.93ID:ocgppLb3Goの魅力ってそこな気がするので。
OSXがVPSで動いたりしないのかしら
0019デフォルトの名無しさん
2014/07/29(火) 23:40:29.86ID:yYRcHyEOIBMだってサーバで動かすソフトが多くなるだろうし、何の問題も無いだろ?
ただ、もう少し文字列操作系統を整備して欲しいな。 タイムスケジュールに乗ってると思うが。
0020デフォルトの名無しさん
2014/07/30(水) 00:29:00.90ID:kIm/CoYCやっぱいまさらサーバサイドにLinux以外の使うの無理だった。
OSXはクライアントOSとしてしか使う気ないわ・・・。
ということでLinux版希望
0021デフォルトの名無しさん
2014/07/30(水) 00:35:17.91ID:CP3nSahn0022デフォルトの名無しさん
2014/07/30(水) 09:24:00.96ID:Nn5HlRg10023デフォルトの名無しさん
2014/07/30(水) 11:03:58.55ID:s1QrMkjS0024デフォルトの名無しさん
2014/07/30(水) 11:09:04.86ID:JrJAkBVK0025デフォルトの名無しさん
2014/07/30(水) 12:33:27.29ID:UUAxeW7b0026デフォルトの名無しさん
2014/07/30(水) 12:48:18.10ID:ddZSmXRh0027デフォルトの名無しさん
2014/07/30(水) 15:04:01.42ID:XjaaJasK0028デフォルトの名無しさん
2014/07/31(木) 11:11:54.32ID:qwayji1U0029デフォルトの名無しさん
2014/07/31(木) 11:25:03.08ID:u2zE/A7k或はIBM PowerPC用にIBMと協議中とか。
並列処理は結構ニーズが有るから慎重でも良い。 既にライブラリは揃ってるわけだし。
0030デフォルトの名無しさん
2014/07/31(木) 11:30:10.32ID:qwayji1U0031デフォルトの名無しさん
2014/07/31(木) 18:42:52.09ID:24Rz0y8qライブラリで対応っしょ。
何にしろGCD使うわけだし
0032デフォルトの名無しさん
2014/08/03(日) 03:35:04.75ID:8apJq8+Rpthread直接は関数ポインタ使うから無理かな
0033デフォルトの名無しさん
2014/08/05(火) 18:39:01.56ID:0W537iyt0034デフォルトの名無しさん
2014/08/05(火) 19:34:08.48ID:o+/LR7Kj小文字のLじゃなくて大文字のiになってるとか?(見やすくするために大文字小文字逆にして書いてます)
0035デフォルトの名無しさん
2014/08/05(火) 21:38:06.91ID:q3/M2RFT一度全部削除して入れ直せば大丈夫だろうが、Fix it したほうが早いね。
0036デフォルトの名無しさん
2014/08/06(水) 10:23:13.01ID:+oVXtDw00037デフォルトの名無しさん
2014/08/07(木) 11:01:38.76ID:so7ZCTBn0038デフォルトの名無しさん
2014/08/08(金) 07:56:57.30ID:0RLXnAM8関数ポインタだって扱える
Function Pointers
C function pointers are imported into Swift as CFunctionPointer<Type>, where Type is a Swift function type.
For example, a function pointer that has the type int (*)(void) in C is imported into Swift as CFunctionPointer<() -> Int32>.
0039デフォルトの名無しさん
2014/08/08(金) 14:04:26.83ID:t4nUvWhzfunc fn(a: Int) -> Int {
return a
}
fn(5) // => 5
fn(5.3) // => 5
let num = 5.3
fn(num) // Error: "Double" is not convertible to 'Int'
fn(Int(num)) // => 5
0040デフォルトの名無しさん
2014/08/08(金) 14:14:09.50ID:FHu5gdbl0041デフォルトの名無しさん
2014/08/08(金) 14:22:23.37ID:0RLXnAM80042デフォルトの名無しさん
2014/08/08(金) 14:34:06.27ID:eIB6EleCとか、どこがセーフティなんだって感じだな
0043デフォルトの名無しさん
2014/08/08(金) 14:44:54.31ID:OLXn5oNKバグではないでしょ
型変換しているつもりが無いっていうか、型変換などしていない。
>>40の言うとおり、リテラルだからコンパイル時に型が決定しているだけ。
fnの引数の型がIntだから最初からInt型になるだけ。
5.3だからDoubleになってIntに型変換されているんじゃない。最初からInt。
これは関数の引数だけじゃなくて代入でも同じ。
let num : Int = 5.3
と書いてもエラーにならない。Double型の5.3がIntに型変換されて代入されるのではなくて、最初からInt。
0044デフォルトの名無しさん
2014/08/08(金) 14:51:28.10ID:0RLXnAM80045デフォルトの名無しさん
2014/08/08(金) 14:57:27.75ID:eIB6EleCprintln("\(1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1)")
がちゃんと動かないんだけど、\()の中って長過ぎるとダメとかあるんだっけ?
0046デフォルトの名無しさん
2014/08/08(金) 15:00:48.88ID:t4nUvWhz5 >= 5.3 // true
とかどう考えても嬉しくないんだけど
0047デフォルトの名無しさん
2014/08/08(金) 16:49:34.13ID:eIB6EleCprintln("hogehoge".length)
って書けるのに、
let str = "hogehoge"
println(str.length)
って書けないのはなんで?
0048デフォルトの名無しさん
2014/08/08(金) 16:58:51.21ID:NYRFXe490049デフォルトの名無しさん
2014/08/08(金) 17:06:32.25ID:eIB6EleC0050デフォルトの名無しさん
2014/08/09(土) 17:04:50.89ID:N+zBGm2pいろんな書き方があるので迷いまする
var d: Dictionary<String, Int> = [:]
var d: [String: Int] = [:]
var d = [String: Int]()
var d = Dictionary<String, Int>()
■ このスレッドは過去ログ倉庫に格納されています