Swift part2
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2014/06/11(水) 14:42:15.02ID:+13mKJ0ZApple 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/
0175デフォルトの名無しさん
2014/06/20(金) 20:47:10.84ID:DSYIvwNiゆうちゃんの売名意欲はんぱない
0176デフォルトの名無しさん
2014/06/20(金) 20:51:35.67ID:CCZRVeL/30分経たずに取り消されててワロタw
0177デフォルトの名無しさん
2014/06/20(金) 21:07:33.19ID:IQz8StZM右上の業績欄で吹くww
0178デフォルトの名無しさん
2014/06/20(金) 21:19:13.04ID:M/JwZqVIC#はこう書ける
var list = new{new{days=31,month="Jan},new{days=28,month="Feb"},new{days=31,month="Mar"},new{days=30,month="May"},new{days=31,month="May"}};
foreach (var t in list.OrderBy(x => x.days))
Console.WriteLine(t);
あるいはこんなことも
var dic = new Dictionary<int, String> {{31,"Jan"},略,{31,"May"}};
foreach (var t in
from t in dic
orderby t.Key
select new { days=t.Key, month=t.Value })
Console.WriteLine(t);
0179デフォルトの名無しさん
2014/06/20(金) 21:27:54.81ID:CCZRVeL/Swift-jpアカウントで追加したリンクが消されててワロタ
0180デフォルトの名無しさん
2014/06/20(金) 22:46:31.47ID:0PgNV7xOWikipediaって、誰でも自己紹介書いていいのか?
0181デフォルトの名無しさん
2014/06/20(金) 22:48:16.71ID:DSYIvwNi0182デフォルトの名無しさん
2014/06/20(金) 22:56:33.10ID:4Z5Rc51bhttp://ja.wikipedia.org/wiki/Wikipedia:%E8%87%AA%E5%88%86%E8%87%AA%E8%BA%AB%E3%81%AE%E8%A8%98%E4%BA%8B%E3%82%92%E3%81%A4%E3%81%8F%E3%82%89%E3%81%AA%E3%81%84
0183デフォルトの名無しさん
2014/06/20(金) 23:33:58.00ID:kEPVLal90184デフォルトの名無しさん
2014/06/21(土) 00:25:46.40ID:+flxE0eCSwift言語の簡易リファレンスを纏めたチートシートcdn2.raywenderlich.com/wp-content/upl…
2014年6月04日 - 3:38pm
0185デフォルトの名無しさん
2014/06/21(土) 00:40:00.78ID:kku3Zr/20186デフォルトの名無しさん
2014/06/21(土) 01:24:05.68ID:jGMnyNE3内輪だけど
0187デフォルトの名無しさん
2014/06/21(土) 01:30:26.51ID:JBSU6pk50188デフォルトの名無しさん
2014/06/21(土) 01:35:52.89ID:5/17O7zjhttps://twitter.com/madogai
0189デフォルトの名無しさん
2014/06/21(土) 04:53:39.17ID:qifWmRUG0190デフォルトの名無しさん
2014/06/21(土) 05:59:44.67ID:qifWmRUGstruct Point {
var x = 0.0, y = 0.0
mutating func moveByX(deltaX: Double, y deltaY: Double) {
x += deltaX
y += deltaY
}
}
var somePoint = Point(x: 1.0, y: 1.0)
somePoint.moveByX(2.0, y: 3.0)
でもこれなら個人的には
func moveByX(x: Double, y: Double) {
self.x += x
self.y += y
}
って書く方がすっきりしてる様に思いました。好みですかね?
0191デフォルトの名無しさん
2014/06/21(土) 07:06:22.95ID:Gm5EhJPM例 func 探す( 文字列: String , 文字: character )
と解りやすく書いておいたつもりでも、呼び出し元が
探す( a , b )
探す( "abcdefg" , "c" )
では意味が解りにくい。
func 探す( 元文字列 文字列: String , 探索文字 文字: character )
或いは
func 探す( #元文字列: String , #探索文字: character )
としておけば
呼び出しは解りやすくなる。
探す( 元文字列: a , 探索文字: b )
探す( 元文字列: "abcdefg" , 探索文字: "c" )
0192デフォルトの名無しさん
2014/06/21(土) 07:23:30.52ID:Gm5EhJPM上の例は、Objective-C の書き方でexternal nameをつけてる例。
swift 流に上の例を書き直すと、
finc moveBy( x deltaX: Double , y deltaY: Double )
moveBy( x: 2.0 , y: 3.0 )
2番目は、たまたま外側の名前の、x , yをパラメータに使ってるが、ローカル名で却って解りにくくなる。
2番目を呼出すと、
moveByX( 2.0 , 3.0 )
数字の意味が解らなくなる。
0193デフォルトの名無しさん
2014/06/21(土) 08:52:29.04ID:eLk4E9G5http://www.atmarkit.co.jp/ait/articles/1406/19/news012_2.html
個人的にも一番感心したのは、やっぱり新言語Swiftの発表でした。
ここ数年Mac、iOS系の開発から遠ざかっていて、最新のObjective-C文法などにも疎くなっていたので、
そろそろ勉強し直さないといけないなぁと本気で危機感を感じていたところに、
Appleからリセットボタンを押された気分です(笑)。
あらためてiOSアプリを開発したいなと肩を押された気がしているデベロッパーは
僕だけではないと思います。
興味深いのは、通常、Swiftのような新言語が発表されると、
従来の言語に慣れ親しんだユーザーからは賛否両論の議論が湧き上がるのですが、
今回のSwiftに関しては、かなりポジティブな意見が目立つように見えます。
こうした反応を見ていても、Swiftがいかに今時の言語をよく研究して、
良い所取りをして開発されたのかが見える気がします。
0194デフォルトの名無しさん
2014/06/21(土) 08:56:03.29ID:6ZbZYmYu★+ニュース板
・ 2NN (推奨サイト)
・ 2chTimes
★+ニュース板新着
・ 2NN新着
・ Headline BBY
・ unker Headline
★+ニュース板その他
・ Desktop2ch
・ 記者別一覧
★全板
・ 全板縦断勢いランキング (推奨サイト)
・ スレッドランキング総合ランキング
・ ログ速
★全板実況込み
・ 2勢 (推奨サイト)
・ READ2CH
・ i-ikioi
※ 要タイトル検索
※ 2chブラウザ併用推奨
0195デフォルトの名無しさん
2014/06/21(土) 21:00:36.35ID:qifWmRUGこう書けたら分かりやすかったのにと思います。
struct Point {
var x = 0.0, y = 0.0
mutating func moveBy(x: Double, y: Double) {
self.x += x
self.y += y
}
}
var somePoint = Point(x: 1.0, y: 1.0)
somePoint.moveBy(x: 2.0, y: 3.0)
実際は以下のようにxの方だけ#を付けないとエラーが出てしまいます。
func moveBy(#x: Double, y: Double)
1つ目の引数だけ扱いが違うのがちょっとややこしいです。
もしくは例に挙げてもらったこれ
func moveBy(x deltaX: Double ,y deltaY: Double)
手間は少し増えるけどミスは減りそうです。
0196デフォルトの名無しさん
2014/06/21(土) 21:01:54.05ID:tQVBpUxDガラパゴス言語4ね
0197デフォルトの名無しさん
2014/06/21(土) 21:03:55.24ID:qifWmRUG0198デフォルトの名無しさん
2014/06/22(日) 01:33:00.56ID:pfgiPEoY一般記法と混同しないように、第2パラメータには外部パラメータ名を付けるように書くのが良いみたいです。
そして第1パラメータ名を関数名の最後につけるのが流儀のようですね。 Objective-Cに合わせたのでしょうが美しくないですね。
struct Point {
var x = 0.0, y = 0.0
mutating func moveByX(x: Double, y y: Double) {
self.x += x
self.y += y
}
}
var somePoint = Point(x: 1.0, y: 1.0)
somePoint.moveByX(2.0, y: 3.0)
0199デフォルトの名無しさん
2014/06/22(日) 01:57:21.67ID:CiHQU1Qw0200デフォルトの名無しさん
2014/06/22(日) 02:07:55.97ID:m6loeTNZvar x = 0.0, y = 0.0
mutating func moveBy(x: Double, y y: Double) {
self.x += x
self.y += y
}
0201デフォルトの名無しさん
2014/06/22(日) 14:02:15.67ID:JSmk+G44互換性のあるとこだけで書けば、
goとソース互換なんじゃね?
0202デフォルトの名無しさん
2014/06/22(日) 14:06:38.79ID:LFHoiLVx微妙に違ってる
0203デフォルトの名無しさん
2014/06/22(日) 14:17:51.27ID:65iLGPB8解ってるよ。
その微妙な違いさえ回避できれば互換性を保てるってことよ。
0204デフォルトの名無しさん
2014/06/22(日) 14:38:25.92ID:65iLGPB8こういう事かえ?
/* Swift */
point.moveBy( X: 1, Y: 2 )
/* Objective-C */
[ point moveByX: 1 Y: 2 ];
"Smalltalk"
point moveByX: 1 Y:2.
0205デフォルトの名無しさん
2014/06/22(日) 15:10:04.67ID:wFLrKJry型の指定の仕方の時点で違うから回避できないだろ
0206デフォルトの名無しさん
2014/06/22(日) 15:23:29.20ID:2jURMw15type string String
func Tag( name String ) String {
var tag String = "<" + name + "/>"
return tag
}
// Swift
func Tag( name :String ) -> String {
var tag :String = "<" + name + "/>"
return tag
}
0207デフォルトの名無しさん
2014/06/22(日) 15:42:53.56ID:0vkagaTcベータだしまだ仕様変えられるだろ
いちいちシフト打鍵が必要でタイプ数も増えるしいいこと無い
0208デフォルトの名無しさん
2014/06/22(日) 15:44:40.34ID:iuL+D4vh0209デフォルトの名無しさん
2014/06/22(日) 15:52:08.83ID:CVWWoFqE0210デフォルトの名無しさん
2014/06/22(日) 15:57:25.29ID:NV1BDSQb0211デフォルトの名無しさん
2014/06/22(日) 16:06:46.64ID:rW+mKnZ00212デフォルトの名無しさん
2014/06/22(日) 16:22:09.18ID:MNXrUkEoauto Tag( const std::string name ) -> std::string
{
std::string tag = "<" + name + ">";
return tag;
}
戻り値を型を省略出来るようにした言語の宿命なんだろ。
0213デフォルトの名無しさん
2014/06/22(日) 16:31:13.55ID:tNIRX/kGfunction := func() {};
// swift
var function = func() {};
// C++
auto function = [](){};
0214デフォルトの名無しさん
2014/06/22(日) 16:55:19.24ID:M4OuaEw5「文字列を引数にとって文字列を戻す関数」を引数にとって「文字列を引数にとって文字列を戻す関数」を戻す関数
なんていうのを記述しようとしたときのわかり易さに大きく影響すると思われ
0215デフォルトの名無しさん
2014/06/22(日) 17:15:55.50ID:LtMDfcfl他の宣言も型が後ろに来るのは、無名関数に合わせてるだけ。
0216デフォルトの名無しさん
2014/06/22(日) 17:38:44.43ID:mgZTcG6HHTML 中に PHP と javascript 埋め込むくらいの気持ち悪さを感じる
0217デフォルトの名無しさん
2014/06/22(日) 17:45:50.87ID:iuL+D4vh0218デフォルトの名無しさん
2014/06/23(月) 10:19:24.43ID:v8LgD0QEやるべきじゃないのかも知れないけど、Qiotaで誰かが書いてたみたいに
例えばゲッタを呼び出すたびにインクリメントされるプロパティとか書けない。
別途インスタンス変数を用意してcomputational propertyとして定義するとか、筋の悪い書き方になる。
そうやったとしてもアクセス指定子もないから元のプロパティに直接アクセスできちゃうし。
どうしてこんなことになったんだ
0219デフォルトの名無しさん
2014/06/23(月) 10:36:40.08ID:k0C4cCblhttp://qiita.com/Lewuathe/items/63801688817c38614cf4
0220デフォルトの名無しさん
2014/06/23(月) 10:59:07.21ID:IjFKX6YY_付きで宣言したら自動的にprivateになればいいなぁ
0221デフォルトの名無しさん
2014/06/23(月) 11:45:05.55ID:knxG2Zrc0222デフォルトの名無しさん
2014/06/23(月) 12:40:13.55ID:2Cm/+3gIそれってObjective-Cでもやってる事はcomputed propertyでしょ。auto synthesizeが効いてて自分で_hogeを宣言する必要がないだけで実質同じじゃない?
0223デフォルトの名無しさん
2014/06/23(月) 12:42:50.21ID:2Cm/+3gI0224デフォルトの名無しさん
2014/06/23(月) 12:53:19.14ID:knxG2Zrcfunc makeCounter() -> () -> Int {
var count = 0;
return {
++count
}
}
let c = makeCounter();
println(c()) // 1
println(c()) // 2
println(c()) // 3
0225デフォルトの名無しさん
2014/06/23(月) 12:59:36.86ID:zCax8W1Q0226デフォルトの名無しさん
2014/06/23(月) 13:25:30.45ID:rcMzefHm0227デフォルトの名無しさん
2014/06/23(月) 13:28:49.27ID:zETqdp8T0228デフォルトの名無しさん
2014/06/23(月) 13:59:22.51ID:k0C4cCbl0229デフォルトの名無しさん
2014/06/23(月) 14:11:58.69ID:IjFKX6YYhttp://swift-lang.org/main/
0230デフォルトの名無しさん
2014/06/23(月) 16:08:46.48ID:k0C4cCbl• Access control (public/private members) is not enabled in this seed.
• It is not possible to build static libraries which contain Swift code in this release.
0231デフォルトの名無しさん
2014/06/23(月) 16:33:17.77ID:v8LgD0QEてかそれだよ、俺が見たのは
>>222
1つのことやるのに2つプロパティを作るのが気持ち悪い
名前も別々につけなきゃいけないし
0232デフォルトの名無しさん
2014/06/23(月) 16:37:33.87ID:knxG2Zrc0233デフォルトの名無しさん
2014/06/23(月) 17:09:38.07ID:IjFKX6YYObjCでゲッタに書く処理といえば遅延初期化が典型的だったけど、それは@lazyでできる
他にゲッタで値を変える必然性のあるケースって何かあるだろうか
0234デフォルトの名無しさん
2014/06/23(月) 20:07:54.04ID:bY8lx62F自分自身を呼び出したら無限ループするのもあたりまえ
0235デフォルトの名無しさん
2014/06/23(月) 22:44:10.74ID:yZxj5sEO0236デフォルトの名無しさん
2014/06/23(月) 22:45:58.55ID:knxG2Zrc0237デフォルトの名無しさん
2014/06/23(月) 22:52:46.74ID:yZxj5sEO[Objective-C retain];
}
0238デフォルトの名無しさん
2014/06/23(月) 23:38:38.48ID:BKKkXYpeObject
subclass: #Example
instanceVariableNames: 'value'
classVariableNames: ''
poolDictionaries: ''
category: 'Example'.
! Example methodsFor: 'Accessing' !
value
^ value ifNil: [ value := 0 ].
!
value: aNumber
value := aNumber.
!!
Accessingで値を取り出す時値を書き換えるってのは、割りと古典的な方法なんだけどね。
objectが重要じゃなくて値が重要って場合は別解としてこういう使い方もあるけど。
! Example methodsFor: 'Accessing' !
value
^ value ifNil: [ 0 ].
!
value: aNumber
value := aNumber.
!!
0239デフォルトの名無しさん
2014/06/24(火) 00:13:09.22ID:o+ts05fh0240デフォルトの名無しさん
2014/06/24(火) 00:16:28.10ID:o+ts05fh0241デフォルトの名無しさん
2014/06/24(火) 00:21:29.84ID:nsfoMIba古典的だから
0242デフォルトの名無しさん
2014/06/24(火) 09:52:46.32ID:AAHBTYvg0243デフォルトの名無しさん
2014/06/25(水) 21:58:00.07ID:79R/fCgLSwiftもそろそろオワコンか
0244デフォルトの名無しさん
2014/06/25(水) 22:26:41.23ID:8AOeuyaK信者混じりの初速がおかしかっただけでしょう
アクセスコントロールはよ
シングルトン書きにくくてもにょる
0245デフォルトの名無しさん
2014/06/25(水) 22:55:47.78ID:yyfslmCP0246デフォルトの名無しさん
2014/06/25(水) 23:18:47.49ID:79R/fCgL0247デフォルトの名無しさん
2014/06/26(木) 00:50:20.58ID:ifBtr7TRenum < …いゃぁっ!! やっぱり無理だようっ、まだ列挙子だもん、デザパタなんて入らないよぅぅっツ!!
enum < うぅ…ま、満足してくれた? アクセス制御ちゃんが来てくれないからって…無理しちゃいけないよ…はぅ…
なんでもない
今、近場の病院をググってる所だ安心しろ
0248デフォルトの名無しさん
2014/06/26(木) 06:00:34.87ID:fv8mroUT0249デフォルトの名無しさん
2014/06/26(木) 23:33:31.01ID:BVAAIzQvいい加減Singleton卒業しろよ。
保守しづらくてたまらんわ。
0250デフォルトの名無しさん
2014/06/26(木) 23:39:50.30ID:WAwEPjdj0251デフォルトの名無しさん
2014/06/26(木) 23:42:07.98ID:qPqjUHLv0252デフォルトの名無しさん
2014/06/26(木) 23:59:18.79ID:BVAAIzQvSingletonと違ってMonostate patternで
作ったclassのobjectは
他のclassのobjectと置き換えが容易。
並列処理を新たに追加する場合や、
複数のobjectが必要になった場合なんかは特に助かる。
0253デフォルトの名無しさん
2014/06/27(金) 00:49:08.49ID:9hXQR0vqつか置き換え要求があり得るならばシングルトン一択では?
多分お互いの考えてる想定ケースが違うんだろうけど
続く二行がなおのこと意味不明
最後のなんか、そもそもシングルトンもモノステートも適用しちゃいかんだろ
0254デフォルトの名無しさん
2014/06/27(金) 00:54:10.86ID:CRdQJr4Y0255デフォルトの名無しさん
2014/06/27(金) 01:25:11.37ID:6uE5vYGa0256デフォルトの名無しさん
2014/06/27(金) 01:28:29.47ID:bk/xChkn0257デフォルトの名無しさん
2014/06/27(金) 06:16:05.51ID:/tBLbKnnオブジェクト指向は愚かな考え。
http://peace.2ch.net/test/read.cgi/tech/1393660194/
0258デフォルトの名無しさん
2014/06/27(金) 07:58:35.16ID:bmd/FTib時代はDI(Dependency Injection)だよ。
疎結合になって保守しやすいし、テストも書きやすくなる。
ていうか、Javaの世界ではとっくにDIが当たり前だから。
いまだにフレームワークでもSingletonなんて使ってるのはObj-Cだけ。
0259デフォルトの名無しさん
2014/06/27(金) 08:13:09.44ID:3Ogs4WPv0260デフォルトの名無しさん
2014/06/27(金) 08:32:48.24ID:jMn+w+Bh0261デフォルトの名無しさん
2014/06/27(金) 09:51:17.33ID:CmsfI9Sw0262デフォルトの名無しさん
2014/06/27(金) 10:05:50.14ID:BbQZN6SMオブジェクト指向だったらなにが必要かって
考えたオブジェクト指向フレームワークの中身がCって形だから
書き方が冗長になる以外は「最近の言語の新機能だぁ!」
みたいなのだいたい再現できるよね。
0263デフォルトの名無しさん
2014/06/27(金) 10:49:17.65ID:iTSjXKIwsharedFoo とか defaultBar とか
0264デフォルトの名無しさん
2014/06/27(金) 12:57:01.86ID:cQ+q76Vpそんなもん存在せんぞ
0265デフォルトの名無しさん
2014/06/27(金) 13:04:18.24ID:5Q+HtdSG0266デフォルトの名無しさん
2014/06/27(金) 13:23:23.08ID:cQ+q76VpshareFooやdefaultBarで検索してもそんなもん出てこない。
0267デフォルトの名無しさん
2014/06/27(金) 13:27:17.30ID:5Q+HtdSGお前がそう思うんならそうなんだろうな
お前の中ではな
0268デフォルトの名無しさん
2014/06/27(金) 13:49:32.26ID:W1qQ5+Xl0269デフォルトの名無しさん
2014/06/27(金) 17:00:40.07ID:iTSjXKIw本気で言ってそうでヤバいなお前
0270デフォルトの名無しさん
2014/06/27(金) 17:23:52.29ID:pR5dE5tVどうやってグローバル変数でシングルトンの代わりをするんだよ
0271デフォルトの名無しさん
2014/06/27(金) 17:25:27.50ID:CRdQJr4Y0272デフォルトの名無しさん
2014/06/27(金) 20:50:53.32ID:02IBmcrSそういうセリフは、シングルトンをグローバル変数の替わり以外で使ってる人だけが言うべき
0273デフォルトの名無しさん
2014/06/27(金) 21:04:07.92ID:RdmQ7muW新参か?
0274デフォルトの名無しさん
2014/06/27(金) 21:10:17.31ID:GbdV8FAONSUserDefaultsとNSFileManagerはシングルトンじゃないよ
■ このスレッドは過去ログ倉庫に格納されています