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

Swift part3

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2014/07/23(水) 11:46:48.42ID:x29J8vdY
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
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/
0035デフォルトの名無しさん2014/08/05(火) 21:38:06.91ID:q3/M2RFT
>>34 良く有る事だが、見えない文字が入ってるとか。
一度全部削除して入れ直せば大丈夫だろうが、Fix it したほうが早いね。
0036デフォルトの名無しさん2014/08/06(水) 10:23:13.01ID:+oVXtDw0
Fix-itダブルクリックしてもなおらんなら、、、
0037デフォルトの名無しさん2014/08/07(木) 11:01:38.76ID:so7ZCTBn
バージョンがあがる度に糞度が増してるな
0038デフォルトの名無しさん2014/08/08(金) 07:56:57.30ID:0RLXnAM8
>>32 Cのライブラリは全て直接使えるよ。
関数ポインタだって扱える

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:t4nUvWhz
暗黙型変換は無いけど、リテラルは暗黙的に型変換されるの?

func 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:FHu5gdbl
リテラルなんだからコンパイル時に判断できるからじゃね
0041デフォルトの名無しさん2014/08/08(金) 14:22:23.37ID:0RLXnAM8
>>39 そうみたいだね、コンパイラのバグだと思ってた方が良さそうだね 多分型変換しているつもりはないんだろう
0042デフォルトの名無しさん2014/08/08(金) 14:34:06.27ID:eIB6EleC
f(2.5 + 3.5) // => 5
とか、どこがセーフティなんだって感じだな
0043デフォルトの名無しさん2014/08/08(金) 14:44:54.31ID:OLXn5oNK
>>41
バグではないでしょ
型変換しているつもりが無いっていうか、型変換などしていない。
>>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:0RLXnAM8
エラーにすべきだろ
0045デフォルトの名無しさん2014/08/08(金) 14:57:27.75ID:eIB6EleC
そんなことより、Playgroundで、
println("\(1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1)")
がちゃんと動かないんだけど、\()の中って長過ぎるとダメとかあるんだっけ?
0046デフォルトの名無しさん2014/08/08(金) 15:00:48.88ID:t4nUvWhz
>>43

5 >= 5.3 // true

とかどう考えても嬉しくないんだけど
0047デフォルトの名無しさん2014/08/08(金) 16:49:34.13ID:eIB6EleC
いや、そんなことより、
println("hogehoge".length)
って書けるのに、

let str = "hogehoge"
println(str.length)
って書けないのはなんで?
0048デフォルトの名無しさん2014/08/08(金) 16:58:51.21ID:NYRFXe49
えっ
0049デフォルトの名無しさん2014/08/08(金) 17:06:32.25ID:eIB6EleC
自己解決しました。
0050デフォルトの名無しさん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>()
0051デフォルトの名無しさん2014/08/09(土) 17:33:00.24ID:3ND9e6Sl
var d = Dictionary<String, Int>()
しっくりくる
0052デフォルトの名無しさん2014/08/09(土) 17:57:04.42ID:7nARyUM7
>>50
var d = [String: Int]()

> You can also write the type of a dictionary in shorthand form as [KeyType: ValueType].
> Although the two forms are functionally identical, the shorthand form is preferred,
> and is used throughout this guide when referring to the type of a dictionary.
0053デフォルトの名無しさん2014/08/09(土) 18:21:33.99ID:N+zBGm2p
>>51-52
ありがとございました
アップル推奨の奴でいきまする
0054デフォルトの名無しさん2014/08/09(土) 22:19:51.31ID:TSdBD6Gl
>>51だとC#と同じになっちゃうから林檎教団的には気に入らないだろうな
0055デフォルトの名無しさん2014/08/09(土) 22:31:53.48ID:3ND9e6Sl
林檎教団w
C++みたいで、見慣れてるって思った
0056デフォルトの名無しさん2014/08/10(日) 00:24:39.30ID:y9erLln4
>>54 気に入らんね。 わざわざDictionary なんて無駄の何物でもないし、
教祖様おすすめの新記法を使うべきだろ
0057デフォルトの名無しさん2014/08/10(日) 00:44:53.30ID:9qr6A6n9
教壇とか信者とか教祖とかどうでもいいんだよ
自分がいちばん良いと思う(あるいは、コーディング規約で定められた)記法を使うだけだ。
自分で書くとしたらvar d = [ String : Int ]()かな。
0058デフォルトの名無しさん2014/08/10(日) 03:53:48.49ID:9xNLSGsY
Swiftで脱アルゴリズムっすよ。
0059デフォルトの名無しさん2014/08/10(日) 22:20:58.90ID:ooL2SMwQ
っすよ
0060デフォルトの名無しさん2014/08/10(日) 22:29:20.21ID:JTN9tFDt
var d[String: Int] = [:]
の方が好きだけど
var d = ["salary": 300000]
のように空で無いときと統一するなら(右辺で型推論するなら)、>>57と同じだなあ

悩ましい
0061デフォルトの名無しさん2014/08/11(月) 04:24:18.04ID:cC/8Gjcj
>>52 だとしても
var d: [String: Int] = [:]
が推奨されてないわけではない
0062デフォルトの名無しさん2014/08/11(月) 11:14:02.48ID:HXiuyVVb
推奨は
var namesOfIntegers = [Int: String]()
でイニシャライズして
namesOfIntegers[16] = "sixteen"
と値を入れても
namesOfIntegers = [:]
で再初期化出来る と言う流れ
0063デフォルトの名無しさん2014/08/13(水) 16:59:09.89ID:xwn08+4R
>>62
なるほど
0064デフォルトの名無しさん2014/08/15(金) 12:28:19.59ID:HBtdHn8g
StringやIntのhashValueこれでいいのかな

"a".hashValue // 4799450059485595655
"b".hashValue // 4799450059485595656

連続しすぎで簡単に衝突しそう
0065デフォルトの名無しさん2014/08/15(金) 13:09:55.51ID:W4XUmOz/
連続性と衝突のし易さに関する相関関係について述べよ
0066デフォルトの名無しさん2014/08/15(金) 13:35:15.80ID:HBtdHn8g
いくつかのハッシュを組み合わせるときに単純にXOR取るだけだと衝突しやすいだろ
あと予測しやすいのでDoS攻撃もしやすい
0067デフォルトの名無しさん2014/08/15(金) 13:44:09.62ID:HBtdHn8g
struct Person: Hashable {
var age: Int
var name: String
var hashValue: Int { return age.hashValue ^ name.hashValue }
}

func ==(l: Person, r: Person) -> Bool { return l.age == r.age && l.name == r.name }

// ↓全部同じ
Person(age: 20, name: "a").hashValue
Person(age: 27, name: "b").hashValue
Person(age: 30, name: "c").hashValue
0068デフォルトの名無しさん2014/08/15(金) 14:03:31.32ID:ctFtgwKN
Javaも31のマジックナンバー掛けて足してくだけだったりするしな。
そのハッシュは暗号化の意味は持ってなくてぶつからないように散らすという意味しかないよ。
攻撃されるような、つまりハッシュを外部に見せる場所では使うべきじゃない。
0069デフォルトの名無しさん2014/08/15(金) 14:37:01.87ID:IEcKMmnc
そうそう。JavaのStringクラスは1文字の場合、charの値がそのままハッシュ値になるし、
整数なら整数値がそのままハッシュ値になるのは、JavaもSwiftも同じ
ただ、ハッシュの計算法については明文化してほしいよなあ。これはObj-Cの時からだけど
0070デフォルトの名無しさん2014/08/15(金) 14:47:41.59ID:W4XUmOz/
>>67
なんで XORとるの?

var hashValue: Int { return (String(age) + ":" + name).hashValue }

とかじゃダメなの?
0071デフォルトの名無しさん2014/08/15(金) 14:53:58.04ID:HBtdHn8g
まぁ気に入らなきゃ extension で全て解決やな
お騒がせ
0072デフォルトの名無しさん2014/08/15(金) 14:59:37.87ID:Lne+Px+X
そうだ
靖国、
逝こう。
0073デフォルトの名無しさん2014/08/15(金) 15:17:20.80ID:IEcKMmnc
>>70
それだとハッシュ値計算が重くなるよ。
単純な数値計算が望ましいから、Javaみたいにするのが無難
0074デフォルトの名無しさん2014/08/15(金) 15:21:15.99ID:IEcKMmnc
>>71
いやだから、StringのhashValue変えることに意味無いんだって。
この場合、XORでなく、他の方法でハッシュ値求めればいいだけだよ
0075デフォルトの名無しさん2014/08/15(金) 15:35:30.99ID:ZaXPBhtE
いつでも重複しにくい推測されにくいような値になる計算をとしたらmdやshaみたいなことになって、
それをインスタンスを作るたびに計算をさせていたらクソ遅いとかw
0076デフォルトの名無しさん2014/08/15(金) 15:47:01.00ID:HBtdHn8g
>>74
もうSipHash 2-4で実装しなおした
0077デフォルトの名無しさん2014/08/15(金) 16:14:55.16ID:IEcKMmnc
>>76
などほどHashDoSか
でもSwiftってiOS/OSX向けだからDoS攻撃されることなくね?
あと、スクリプト言語はともかく、Obj-C並みの速度で動作するSwiftへのパフォーマンスの影響はいかほどなんだろう。
0078デフォルトの名無しさん2014/08/16(土) 00:47:57.07ID:XlNU51V9
extensionは関数のオーバーライドできないんだな。Obj-Cはできていたが
0079デフォルトの名無しさん2014/08/16(土) 08:42:21.65ID:DXpV4TuM
え?
0080デフォルトの名無しさん2014/08/17(日) 11:21:02.10ID:NRGjpcdU
これがエラーになるんですがなんでですかね?

var d = ["a": 10, "b": "BBB"]
d["C"] = "123"


ちなみに、こっちはOKでした。

var d:[String: Any]= ["a": 10, "b": "BBB"]
d["C"] = "123"
0081デフォルトの名無しさん2014/08/17(日) 13:19:14.20ID:V8SXHhEt
無限ループこわい

struct S {
var a: Int = 0 {
didSet {
println("a did set: ¥(a)")
b = a + 1
}
}
var b: Int = 0 {
didSet {
println("b did set: ¥(b)")
a = b + 1
}
}
}

var s = S(a: 0, b: 0)
s.a = 1

a did set: 1
b did set: 2
a did set: 3
b did set: 4
a did set: 5
b did set: 6
a did set: 7
…
0082デフォルトの名無しさん2014/08/17(日) 13:26:01.14ID:V8SXHhEt
>>80
上は Foundation.NSDictionary になるからダメ
下は Swift.Dictionary<String, Any> だからおk

ちな
var d = ["a": 10, "b": "BBB"].mutableCopy()
d.setObject("123", forKey: "C")
println(d.description)

{
C = 123;
a = 10;
b = BBB;
}

NSMutableDictionaryにしてもSwiftのsubscript持ってないから使いにくいね
0083デフォルトの名無しさん2014/08/17(日) 13:29:48.59ID:V8SXHhEt
あ、勘違い
NSMutableDictionary でも subscript 使えたわw

var d = ["a": 1, "b": "2"].mutableCopy() as NSMutableDictionary
d["c"] = 9
println(d)
0084デフォルトの名無しさん2014/08/17(日) 13:31:26.48ID:V8SXHhEt
あ、mutableCopy() なくてもいけたw

var d = ["a": 1, "b": "2"] as NSMutableDictionary
d["c"] = 9
println(d)

連レススマソ
0085デフォルトの名無しさん2014/08/17(日) 13:37:39.60ID:Oy9xGDlU
>>84 わざわざそんなことするなら最初からSwift.Dictionary使うよね
型変換のサンプルとしてなら解るが
0086デフォルトの名無しさん2014/08/17(日) 14:03:51.32ID:K7CnHZGx
>>85
問題は、リテラルで暗黙的にSwift.Dictionary を 作ろうとした時に、typoでFoundation.NSDictionary に なってしまい、さらにその行ではエラーにならない可能性がある、という点だと思います
0087デフォルトの名無しさん2014/08/17(日) 14:31:33.29ID:6prtFSik
Anyは型類推を使わないようにした方が確実と言うことかな
Typo も多いだろうし
0088デフォルトの名無しさん2014/08/17(日) 14:34:39.04ID:NRGjpcdU
>>82-84
レス感謝
リテラルだとNSDictionaryになる場合があるんですね
なんか分かりにくいですね。もうちょっとわかりやすい規則性だといいんですが...
0089デフォルトの名無しさん2014/08/17(日) 14:51:16.87ID:LfZg7/6z
valueがAnyだとNSDictionaryになるみたい。
valueをAnyObjectにするとDictionaryになる。

おそらく、Obj-Cとの互換性のためじゃないかと思う。(NSDictionaryのvalueはAny扱いだろうから)
StackOverflowでも同じ話題が出てる
http://stackoverflow.com/questions/24023622/swift-dictionary-bug
0090デフォルトの名無しさん2014/08/17(日) 14:53:42.48ID:LfZg7/6z
でも、SwiftのDictionaryはvar/letでmutable/immutableだから、この仕様(というか実装)は微妙だなあ
0091デフォルトの名無しさん2014/08/17(日) 15:03:23.86ID:LfZg7/6z
すまん、NSDictionaryのvalueもAnyObjectだな
連レス失礼
0092デフォルトの名無しさん2014/08/17(日) 15:47:24.27ID:V8SXHhEt
NSMutableDictionaryは参照型だから別に整合性はある

AnyやAnyObjectは祖先クラスじゃないから、[1, "a"]ってしたときに共通の祖先クラスがなくてSwiftの世界じゃ型を決められない

共通の祖先クラスがあればちゃんと型推論働く

class Sup {}
class SubA : Sup {}
class SubB : Sup {}
class SubC : Sup {}

var arr = [SubA(), SubB()] // <-ちゃんと[Sup]型になる
arr.append(SubC()) // [Sup]型だからSubCも突っ込める
0093デフォルトの名無しさん2014/08/17(日) 21:19:17.58ID:QzjnpziE
これが警告もないとは...やっぱり糞言語だな

var i = 10
for i in 1...5 {
println(i)
}
println(i)
0094デフォルトの名無しさん2014/08/17(日) 23:11:23.64ID:n698S0JW
まあ、そんなことを意図的にする場合は少ないけど、 i とか普通に使っているアホだからすぐに糞いいたたがるのだろなっとw
0095デフォルトの名無しさん2014/08/17(日) 23:23:32.70ID:GikCLa8j
>>94
無理があるな
0096デフォルトの名無しさん2014/08/17(日) 23:28:28.38ID:Dhvcldox
>>93
警告がないことがクソな理由がわからん
0097デフォルトの名無しさん2014/08/17(日) 23:33:37.07ID:LfZg7/6z
>>93
何か問題あるのか?
for文の中でだけiはカウントされているのに?
0098デフォルトの名無しさん2014/08/17(日) 23:34:59.76ID:QzjnpziE
何故かこっちは期待した動き...やっぱ糞言語だわ

var i = 10
for i=0; i<=5; i++ {
println(i)
}
println(i)
0099デフォルトの名無しさん2014/08/17(日) 23:36:24.94ID:LfZg7/6z
>>98
var i = 10
for var i=0; i<=5; i++ {
println(i)
}
println(i)
0100デフォルトの名無しさん2014/08/17(日) 23:41:12.49ID:tBLxxj+B
>>98 なぜかもクソもあるか、ごく自然な文法だろが。 そんな事も解らなければ入門書を10冊読め
0101デフォルトの名無しさん2014/08/17(日) 23:43:25.37ID:LfZg7/6z
>>98は外部スコープの変数をそのまま参照
>>99は新たに変数を定義している。for-inも同じ
って違い
0102デフォルトの名無しさん2014/08/17(日) 23:50:58.64ID:QzjnpziE
糞言語すぎてやる気なくなったからもう寝るわ
0103デフォルトの名無しさん2014/08/18(月) 00:11:33.88ID:En9s5gLv
×糞言語すぎてやる気なくなったからもう寝るわ
○糞理解力すぎて恥ずかしくなったからもう寝るわ
0104デフォルトの名無しさん2014/08/18(月) 02:59:27.51ID:O5wid4ZY
馬鹿には無理
0105デフォルトの名無しさん2014/08/18(月) 09:45:40.90ID:AEgSkInF
今んとこはまだマニアのための玩具ってかんじだな
いろいろと粗が目立つ
開発者からのフィードバックも膨大に溜まってんだろ
こなれてくるまでには2,3年はかかるか
0106デフォルトの名無しさん2014/08/18(月) 14:58:59.79ID:AbutQB81
>>105 1年もあれば落ち着くだろ
ライブラリの整備は多少時間がかかるかもしれないが
0107デフォルトの名無しさん2014/08/18(月) 15:16:48.80ID:+QBXrcY+
>>101
これcも同じだけど。スコープとか知らんの?
0108デフォルトの名無しさん2014/08/18(月) 15:18:22.93ID:kU0z26/t
>for i=0; i<=5; i++ {
つうかどうしてアホー言語っていちいち字面をキモくしなきゃ気がすまないんだ
0109デフォルトの名無しさん2014/08/18(月) 15:26:28.48ID:r8tHn57o
最近の言語は、、、まあいいや
0110デフォルトの名無しさん2014/08/18(月) 15:44:54.29ID:7O3aXnPz
カッコつけてもええんやでえ。でもそのうち淘汰されてそっちがダサくってな
いわばTPOっていう?w
0111デフォルトの名無しさん2014/08/18(月) 15:50:06.54ID:AbutQB81
>>108 アホはCも知らないのか?
それが嫌ならこんなのどうだ?好きなの使え

for i in 0...5 {}
0112デフォルトの名無しさん2014/08/18(月) 15:52:47.66ID:r8tHn57o
... は ..< になったんじゃ?
ってそういやbeta5が出てたな
0113デフォルトの名無しさん2014/08/18(月) 15:53:32.18ID:IXyCPeCc
var i = 10
for i=0; i<=5; i++ {
println(i)
}
println(i)

これを for in を使って書くとしたら...
0114デフォルトの名無しさん2014/08/18(月) 16:16:23.42ID:DYjOgIx2
dan kogai...
swiftにコミットするのやめてくれんかのう
0115デフォルトの名無しさん2014/08/18(月) 16:21:49.19ID:AbutQB81
>>112 a < b の範囲 a .. b が、a ..< b に変わっただけ
a <= b の範囲は a ... b のまま
0116デフォルトの名無しさん2014/08/18(月) 16:43:01.98ID:nVnuxrx8
>>108
Cのfor文の丸括弧を取っ払っただけだし,C++,C#,Javascriptでも同種の構文があるんだが。
何にも知らないんだね。
0117デフォルトの名無しさん2014/08/18(月) 16:46:35.71ID:r8tHn57o
あー、はいはいそういうことかありがとう >>115

for文で <= 使うのはかなり特殊なケースだから勘違いしちゃったよ
まあこう書くと反論する人いるだろうからこのへんでー
0118デフォルトの名無しさん2014/08/18(月) 21:16:14.69ID:jy6904iq
セミコロンとかっこをつけたら、ほぼC構文
ぎゃくに、ちょこまか変えてるのが今はウザい
しかも、つけてもコンパイルとおるって言う
じゃあ何でとったっていう
0119デフォルトの名無しさん2014/08/18(月) 21:19:53.54ID:WWtz0eQI
そんなにセミコロン書きたいのか?
しばらくSwift書いてObjCに戻ったらセミコロンがもの凄くかったるく感じる
0120デフォルトの名無しさん2014/08/18(月) 21:42:59.44ID:En9s5gLv
>>118
aaa(); bbb()
こんな風に一行で書くには;がいるわけ
今は省けるもんは省くのがトレンドだからね(型推論にしても)
でも、Swiftは無闇に省いているわけではない。
例えば、ifなどの制御構文のブロックとか、return句とかは必須だ。
0121デフォルトの名無しさん2014/08/18(月) 21:43:56.75ID:jy6904iq
>>120
そうだ、それがうぜー
全部つければ何も考えなくていいのに
0122デフォルトの名無しさん2014/08/18(月) 21:47:40.83ID:En9s5gLv
>>121
そのうち慣れて何も考えなくても書けるようになるよ。
0123デフォルトの名無しさん2014/08/18(月) 21:50:27.90ID:jy6904iq
>>121
ところで、if文ブロックとreturnにセミコロンが必要ってのはどこに書いてあったっけ?
0124デフォルトの名無しさん2014/08/18(月) 21:53:11.65ID:jy6904iq
鵜呑みにしたおれがアホだった
今リファレンス読んでみたけど、>>120の1行目だけ正しいね
0125デフォルトの名無しさん2014/08/18(月) 21:56:58.04ID:jy6904iq
結局セミコロンは書かなくてもいい(まあ書きたきゃ書いてもいいけど)って書いてある
一行にまとめて書く場合以外は
0126デフォルトの名無しさん2014/08/18(月) 22:01:50.19ID:En9s5gLv
>>123
ちゃうちゃう、制御文にブロックが必要ってこと
Swiftでは以下のようには書けない
//-------
if (a.hasPrefix("s"))
doSomething()

// これはOK
if (a.hasPrefix("s")) { doSomething() }
//-------

あと、Rubyみたいにどこでもreturnが省けるわけではないということ

//------
func empty() -> String { return "" } // return必須

class SomeClass {
var aaa:String { return "AAA" } // return 必須
}
let f:()->String = { "aaa" } // クロージャは式のみの場合returnを省ける

let f2:()->String = { var a = "aaa"; return a } // こっちはreturn必須
//------

セミコロンにしても、締めるところは締めていると言うことを言いたかったんや。
0127デフォルトの名無しさん2014/08/18(月) 22:16:02.11ID:jy6904iq
>>126
なるほど、そういうことか
全部セミコロンの話かと思ってた
どうもありがとう
にしても、
 if (a.hasPrefix("s"))
 doSomething()
はやりそうだなぁ

Cでも、単文でも極力{ }でくくるようにはしてるけど
0128デフォルトの名無しさん2014/08/18(月) 22:33:45.06ID:WWtz0eQI
if文はアップル自身が痛いチョンボやらかしてるからな
0129デフォルトの名無しさん2014/08/18(月) 23:24:23.43ID:TotxymUg
全然関係ない。if文絡みであっただけで、単なるコピペミスだろ
あれ、一目見ておかしいと思わないの? { } でくくっても同じだろ
0130デフォルトの名無しさん2014/08/19(火) 00:02:18.38ID:dGN2Xh51
あんなのコーディング作法がどうとかいう問題じゃないだろ
あんな重要なとこまともにテストしてないのがおかしい
0131デフォルトの名無しさん2014/08/19(火) 13:57:12.16ID:c6AsXCDx
「これは間違いなく普及する」小飼弾、Swift愛を語る
http://news.livedoor.com/article/detail/9157615/

「2014年前半のインパクトはもう圧倒的にSwiftの登場。これは間違いなく普及する」と小飼氏が断言する理由は、次の5つに集約されるそうだ。

【1】既存環境の言語との高い互換性
【2】他の言語の“負の遺産”を捨てている
【3】優れたリファレンス
【4】iOSエンジニアをアセンブラ領域まで進出させる可能性
【5】クローズドから始めてオープンへというAppleの戦略意図を感じる
0132デフォルトの名無しさん2014/08/19(火) 14:08:21.75ID:sBhGF3j6
小飼が絶賛したPerl6はほとんど普及してないわけだが
0133デフォルトの名無しさん2014/08/19(火) 14:28:29.94ID:c6AsXCDx
>>132 それはPerlオタクだから仕方ないだろ そのオタクが他の言語に目移りしたと言う事は注目に値する
0134デフォルトの名無しさん2014/08/19(火) 15:16:25.26ID:0B3vcACg
dankogaiのコードってゴミコードしか見たことないんだけど、なんかすばらしいコードでも書いてるのか?
■ このスレッドは過去ログ倉庫に格納されています