トップページ⇒tech
1002コメント383KB

Swift part9 [無断転載禁止]©5ch.io

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 8b3c-/6Y/)2016/10/18(火) 11:34:44.16ID:oLo879ze0
WWDC2014で発表されたAppleの新言語Swiftについて語りましょう

関連スレ

プログラミング言語Swift 3
http://potato.2ch.net/test/read.cgi/mac/1408762479/

[SDK]iPhoneアプリ開発初心者質問箱47[touch][iPad]
http://potato.2ch.net/test/read.cgi/mac/1470902093/

Xcode part14
http://potato.2ch.net/test/read.cgi/mac/1476190499/

Swiftアンチスレ part1
http://echo.2ch.net/test/read.cgi/tech/1458491343/

前スレ
Swift part8
http://echo.2ch.net/test/read.cgi/tech/1463149806/
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
0583デフォルトの名無しさん (ワッチョイ ffc9-mu6I)2017/01/19(木) 20:32:11.50ID:VasCiZ4n0
Swift/ObjCのARCはshared_ptr/weak_ptrと同じ
ただ、SwiftはKotlinのoptional, Rustのif letを言語仕様でパクってあってコーディングが楽

この部分だけObjCにバックポートしたら便利なんじゃね?とふと思った
__nullable, __nonnullとか微妙なキーワードによるバックポートは正直使いづらい
0584デフォルトの名無しさん (アウアウオー Sadf-WaXM)2017/01/19(木) 22:19:36.62ID:w+bE5wHza
そうですね
0585デフォルトの名無しさん (オイコラミネオ MMff-Taza)2017/01/20(金) 15:40:14.18ID:ZOjl9uXaM
型推論をプログラミング知識が乏しい人に説明するなら、どんな隠喩がいいと思う?
0586デフォルトの名無しさん (アウアウオー Sadf-WaXM)2017/01/20(金) 16:00:12.37ID:is3Fha3pa
アヒルみたいな顔してお尻フリフリ歩いてグワッ、グワッて鳴く鳥がいたら、もうそれアヒルってことでいいよね
って感じでいいんじゃね
0587デフォルトの名無しさん (JP 0H87-Taza)2017/01/20(金) 16:35:51.58ID:6bMM3T6GH
うわっ!これガチョウだ!!
0588デフォルトの名無しさん (アウアウオー Sadf-WaXM)2017/01/20(金) 17:08:41.66ID:is3Fha3pa
などと、コンパイルエラーが出たら明示的に宣言してね
ということで
0589デフォルトの名無しさん (スップ Sd1f-ddg/)2017/01/20(金) 18:43:31.96ID:2Wi9HN+wd
>>585
男か女か解らない人がいるんだけれど、喉仏が出ているから、男って事で。


みたいな?
0590デフォルトの名無しさん (ササクッテロリ Sp87-/mpU)2017/01/20(金) 19:05:32.26ID:4nNA4c16p
「おまじない」が古くから由緒ある陰語

実際問題、プログラミング知識が乏しいと
型推論と型宣言と動的型を区別できないから説明省いて良いと思う
0591デフォルトの名無しさん (ワッチョイ 738f-ILNu)2017/01/20(金) 22:51:19.05ID:/kNqqxub0
いやいやそれくらいコンパイラ側が自動で型を推測してよってツッコミを入れていたところが解決した
0592デフォルトの名無しさん (アウアウオー Sadf-WaXM)2017/01/20(金) 23:13:59.78ID:sVl+H8Xfa
それは良かった
0593デフォルトの名無しさん (アウアウオー Sadf-WaXM)2017/01/20(金) 23:59:07.88ID:sVl+H8Xfa
a = b = c = 0
って感じで同じ型の変数に値を一気に代入できないのは不便だよね
0594デフォルトの名無しさん (ササクッテロリ Sp87-/mpU)2017/01/21(土) 01:50:38.98ID:d82h9KNNp
そうですね
0595デフォルトの名無しさん (ワッチョイ 6f5b-JNK/)2017/01/21(土) 01:51:05.02ID:W/zpHkC+0
だってSwiftだもの
0596デフォルトの名無しさん (ササクッテロロ Sp87-UhX6)2017/01/21(土) 02:08:12.56ID:wL4zqwoRp
みつを来てんね
0597デフォルトの名無しさん (オッペケ Sr87-+PXi)2017/01/21(土) 19:37:18.34ID:aueqPNmbr
>>582
つまりc++が最強?
0598デフォルトの名無しさん (ワッチョイ bf8c-GzBV)2017/01/23(月) 21:45:03.95ID:RV5yVqC70
初見なんだけどココ、NewB的な質問もOkなトコロ?
0599デフォルトの名無しさん (ワッチョイ bf8c-GzBV)2017/01/23(月) 21:59:18.58ID:RV5yVqC70
>>598だけど返事待つのもあれだし、質問するわ。ちょっと説明しづらいんだけど
例えばビューのカスタムクラス作って、そこのポップアップボタンとかのアイテムにセレクターつけるとするじゃん。
そんでそのクラスのインスタンスをペアレントのビューに複数おいてどれかのアイテムクリックすると、
別のインスタンスのセレクタが呼ばれちゃわね?二つ目のインスタンスのボタン押したのに、一つ目に反映されたりする。

このカスタムクラス複数インスタンス化においてのNotificationとか、selectorとかで困ってんの、どうやって回避する?
0600デフォルトの名無しさん (アウアウオー Sadf-WaXM)2017/01/23(月) 22:05:37.88ID:WrhQGC6sa
ちょっと言ってる意味がわからないけど
俺のエスパー能力が正確なら、Outlet Collectionでググるといいかもしれない
0601デフォルトの名無しさん (アウアウオー Sadf-WaXM)2017/01/23(月) 22:06:59.56ID:WrhQGC6sa
いやなんか違うような気がするな
やっぱエスパーさんの登場を待とう
0602デフォルトの名無しさん (ワッチョイ f35b-jh1Y)2017/01/23(月) 22:11:15.46ID:Llx+8S3H0
>>599
俺も何いってるのか?
さっぱりだわぁ
0603デフォルトの名無しさん (ワッチョイ bf8c-GzBV)2017/01/23(月) 22:26:13.92ID:RV5yVqC70
すげーリプはえーやばい。
ググってくるわーthx
0604デフォルトの名無しさん (ワッチョイ 33a1-U6eW)2017/01/23(月) 22:26:58.66ID:sPzCf4bI0
Notificationの、selecterとnameちゃんと使い分けてる?
0605デフォルトの名無しさん (ワッチョイ c33c-3qL8)2017/01/23(月) 22:29:39.75ID:Ws+iSkNs0
>>599
UIViewControllerでなくUIViewを継承
0606デフォルトの名無しさん (ワッチョイ bf8c-GzBV)2017/01/23(月) 22:35:00.65ID:RV5yVqC70
>>604
NSMenuItemからいくと、postじゃなくてaction限定になってるんじゃないかな?限定的でスマソンだけど

>>605
OSXでNSViewを継承
0607デフォルトの名無しさん (ワッチョイ bf8c-GzBV)2017/01/23(月) 22:44:47.72ID:RV5yVqC70
>>604
あとNameもインスタンスだと同じになって別のインスタンスが呼ばれちゃう。
でもこれは登録する時にNameにインデックスとか何らかIDつけると回避できそうな気がするけど、メニューアイテムだと

menu?.addItem(NSMenuItem.init(title: name , action: #selector(selected(_:)), keyEquivalent: ""))

みたいな感じで付け入る隙がないんだ
0608デフォルトの名無しさん (ワッチョイ 6f5b-JNK/)2017/01/23(月) 22:54:40.36ID:wkYluZkM0
Swiftの字面の汚さは慣れないなやっぱり
0609デフォルトの名無しさん (ワッチョイ c33c-ddg/)2017/01/23(月) 23:00:43.39ID:d7Gq4/N70
>>599
「ポップアップボタンとか」の「とか」は、「ポップアップボタン」以外の何?

そもそもAppleは、ポップアップボタンなんてものは提供していないがな。
それにiOSでは、クリックなんかはできない。

HumanInterfaceGuidelinesを読み直して出直した方が良いな。
0610デフォルトの名無しさん (ワッチョイ 9339-u5as)2017/01/24(火) 00:55:51.35ID:exkLo0yv0
文字とかって Character と CChar とあるみたいだけど、
こういうことしたい時はどうすればいいんでしょう

Cで

for(i = 'a'; i <= 'z'; i++){
putchar(i & 0x5f);
}
putchar('\n')

みたいなのを swiftで書く場合って…

for i in ???...??? {
もうわからん
}
0611デフォルトの名無しさん (アウアウオー Sadf-WaXM)2017/01/24(火) 01:24:22.63ID:6XEtipUUa
なんでそんなことしたいのか知らんけど
くんな感じ?

for ch in "a".utf8.first!..<"z".utf8.first! {
print(Character(UnicodeScalar(ch & 0x5f)))
}

もっとスマートな書き方があるかも知らん
0612デフォルトの名無しさん (ワッチョイ bf8c-GzBV)2017/01/24(火) 01:33:52.81ID:7WmLdbGx0
>>610

let str = "abcdefghijklmnopqrstuvwxyz"

for c in str.characters{
print(c)
}

がんばれ
0613デフォルトの名無しさん (アウアウオー Sadf-WaXM)2017/01/24(火) 01:43:19.82ID:6XEtipUUa
>>612
それ文字列の中を順に表示してるだけじゃん
0614デフォルトの名無しさん (ワッチョイ bf8c-GzBV)2017/01/24(火) 01:56:29.31ID:7WmLdbGx0
>>612
これ何で大文字になんの?
0615デフォルトの名無しさん (ワッチョイ bf8c-GzBV)2017/01/24(火) 01:57:25.69ID:7WmLdbGx0
>>614
>>611の間違い
0616デフォルトの名無しさん (アウアウオー Sadf-WaXM)2017/01/24(火) 02:07:07.07ID:6XEtipUUa
それはAsciiコードがそうなってるから...
0617デフォルトの名無しさん (アウアウオー Sadf-WaXM)2017/01/24(火) 02:10:03.40ID:6XEtipUUa
大文字にするだけならこっちの方がいいか

for val in UnicodeScalar("a").value...UnicodeScalar("z").value
{
print(String(format: "%c", val).uppercased())
}
0618デフォルトの名無しさん (スッップ Sd1f-JNK/)2017/01/24(火) 02:22:36.10ID:kY6N+f51d
>>611
クッソ読みにくいな
さすがSwift()だわ
0619デフォルトの名無しさん (ワッチョイ c33c-ddg/)2017/01/24(火) 05:59:43.55ID:odFyaWZN0
>>616
何だ?Asciiコードって。

SUICAカード
電球の球
頭痛が痛い
地震が揺れた
0620デフォルトの名無しさん (ワッチョイ 9339-u5as)2017/01/24(火) 07:47:42.37ID:exkLo0yv0
ありがとう

>>611
ワイの求めていたものに近い

見てたら意味的には
>>617のがよさげ

別に小文字を大文字にしたいわけじゃなくて
文字コードを数値で扱いたく
かつ数値を文字にしたかった

例えば大量のテストデータを自動生成するとか
発想が Cなので、そういうやり方しか思いつかないんだけど
手段にたどりつけないで試行錯誤してます
0621デフォルトの名無しさん (ワッチョイ 9339-u5as)2017/01/24(火) 07:50:49.58ID:exkLo0yv0
>>612
それは思いついたけどスマートじゃないと思った

例えばその "a-z" の文字列を生成したい時にどうするかというのが気になった

Cなら例えば
atoz = malloc('z' - 'a' + 2);
p = atoz;
for(c = 'a'; c <= 'z'; c++) {
*p++ = c;
}
*p = 0
ってできるじゃん

それを "abc...z" って26文字ぐらいならベタで書けるけど
これを "aa"〜"zz"までとか量が増えて行ったら
ベタでは書けないなぁとか。

てかなんで for ch in 'a'...'z' って書けないんだよ
それぐらいやらせてくれよ
0622デフォルトの名無しさん (ササクッテロリ Sp87-/mpU)2017/01/24(火) 10:19:40.46ID:PbjuVM+3p
aからzが子文字のみの昇順で並ぶ保証がないから
万が一、将来AaBbC...yZzって並ぶ文字コードが世界標準になったら
'a'...'z'が書ける言語仕様にしてたらどうすればいいか分かんないじゃん

これは極端な例だけど、要はそういう不意の事象に耐える意識高い言語仕様にswiftはなってる
0623デフォルトの名無しさん (アウアウオー Sadf-WaXM)2017/01/24(火) 10:32:22.93ID:8WMehL2Va
いやもう文字コード決まってんじゃんw
今更文字コード変えられたら、どっちみちコンパイルし直しになるし
どんだけ既存のプログラムに影響出るんだよw
0624デフォルトの名無しさん (ワッチョイ ff4c-Taza)2017/01/24(火) 10:52:16.06ID:bcJOEpSP0
ASCII知らないのか
0625デフォルトの名無しさん (ワッチョイ c33c-3qL8)2017/01/24(火) 11:01:02.71ID:HBr+KooL0
>>620
>文字コードを数値で扱いたく かつ数値を文字にしたかった
一応部品化すれば本処理部分は多少は見やすく・・・

func irange(_ a:UnicodeScalar, _ b:UnicodeScalar) -> CountableClosedRange<UInt32> {
  return a.value...b.value
}
func nchr(_ a:UInt32) -> UnicodeScalar {
  return UnicodeScalar(a) ?? "?"
}

for i in irange("a", "z") {
  print(nchr(i & 0x5F))
}
0626デフォルトの名無しさん (ササクッテロリ Sp87-/mpU)2017/01/24(火) 11:16:48.70ID:PbjuVM+3p
ソースファイルの文字コードとランタイム内の文字コードは別に考えろよ
ソースファイルの話ならjavac -encodingみたいに対応すればいい
ランタイム内はそれが変動出来るようにString.utf8やUnicodeScalarがある

ソースファイルの文字コードに影響されるってC言語かよw
0627デフォルトの名無しさん (ワッチョイ 335b-wAZW)2017/01/24(火) 12:08:53.72ID:gy8Md2CU0
文字列は魔境
0628デフォルトの名無しさん (アウアウオー Sadf-WaXM)2017/01/24(火) 12:14:47.00ID:8WMehL2Va
ソースファイルにしろランタイムにしろいきなり文字コード体系が変わってもらっちゃ
どんな言語だって困るだろ
文字コードの大小に依存してるコードなんてごまんとあるぞ
0629デフォルトの名無しさん (ワッチョイ c33c-M+yL)2017/01/24(火) 17:34:40.36ID:+WwPKdrl0
日本語が不自由だとか勘弁してくれよ。
https://kotobank.jp/word/%E3%81%A8%E3%81%8B-582055#E3.83.87.E3.82.B8.E3.82.BF.E3.83.AB.E5.A4.A7.E8.BE.9E.E6.B3.89
0630デフォルトの名無しさん (ワッチョイ 9339-u5as)2017/01/24(火) 19:57:41.91ID:exkLo0yv0
>>625
イイね

ただ大文字化したいというよりは
こういった基本的な処理を身に着けたい

今まで Cや Perlでやってたことが
swiftでもできたらなぁって感じ
できないと俺の寿命がストレスでマッハ
0631デフォルトの名無しさん (スッップ Sd1f-JNK/)2017/01/24(火) 21:29:28.75ID:6Rgy6vgTd
最近の言語だとPythonは読みやすくて覚えやすくていい文法してると思う
0632デフォルトの名無しさん (アウアウウー Sa67-WaXM)2017/01/24(火) 21:47:34.41ID:KTC1YGyNa
Pythonが最近の言語なわけないだろ
0633デフォルトの名無しさん (ワッチョイ a3d4-hfv1)2017/01/24(火) 22:31:37.74ID:GRF78Bhf0
Pythonは3で死んだ
0634デフォルトの名無しさん (ワッチョイ cf42-3qL8)2017/01/24(火) 22:35:46.17ID:L2GKKZjf0
死んだの?
0635デフォルトの名無しさん (ワッチョイ a3d4-hfv1)2017/01/24(火) 22:50:13.02ID:GRF78Bhf0
俺が死んだ
0636デフォルトの名無しさん (ワッチョイ ffc9-NwiU)2017/01/24(火) 23:30:23.92ID:Khh2743H0
UnicodeScalarを拡張してしまえばいいのでは

extension UnicodeScalar : Strideable {
  public func advanced(by n: Int) -> UnicodeScalar {
    return UnicodeScalar(self.value.advanced(by: n))!
  }
  public func distance(to other: UnicodeScalar) -> Int {
    return other.value.distance(to: self.value)
  }
}

extension UnicodeScalar : BitwiseOperations {
  public static var allZeros: UnicodeScalar = UnicodeScalar(UInt32.allZeros)!

  public static func &(lhs: UnicodeScalar, rhs: UnicodeScalar) -> UnicodeScalar {
    return UnicodeScalar(lhs.value & rhs.value)!
  }
  public static func ^(lhs: UnicodeScalar, rhs: UnicodeScalar) -> UnicodeScalar {
    return UnicodeScalar(lhs.value ^ rhs.value)!
  }
  public static func |(lhs: UnicodeScalar, rhs: UnicodeScalar) -> UnicodeScalar {
    return UnicodeScalar(lhs.value | rhs.value)!
  }
  public static prefix func ~(rhs: UnicodeScalar) -> UnicodeScalar {
    return UnicodeScalar(~rhs.value)!
  }
}

for c in UnicodeScalar("a")...UnicodeScalar("z") {
  print(c & UnicodeScalar(0x5f)!)
}
0637デフォルトの名無しさん (アウアウウー Sa67-WaXM)2017/01/25(水) 08:50:03.50ID:WD3nSRWWa
うっわめんどくせ
もうC言語でいいわ
0638デフォルトの名無しさん (エムゾネ FF1f-JNK/)2017/01/25(水) 09:06:42.63ID:Xv7wslg5F
>>637
基本読みにくいんだよなSwift
0639デフォルトの名無しさん (ワッチョイ c33c-3qL8)2017/01/25(水) 10:23:43.05ID:2+5m68360
>>636
結局リテラルがアレなんだよな
型指定しないとStringになるから俺はStrideable断念して引数使ったけど

シングルクォートのリテラルを言語仕様に入れなかった理由がよく分からない
0640デフォルトの名無しさん (ササクッテロリ Sp87-/mpU)2017/01/25(水) 10:39:46.63ID:+ZiK5CtYp
シングルクォート = UnicodeScalar で言語仕様切るとUnicodeに引っ張られるからでは
古い言語にならってASCIIを想像する人もいれば、今時ならUTF8だと想像する人もいるだろうし、フレームワークに合わせてUnicodeと言う人もいる
落とし所のない不毛な議論が目に見えるから、検討したけど削除した仕様な気がする
0641デフォルトの名無しさん (ワッチョイ c33c-3qL8)2017/01/25(水) 11:04:36.57ID:2+5m68360
でもStringとUnicodeScalarの間にCharacterが入ってるあたりは
既にUnicodeに盛大に引っ張られてる気もする

let c = Character("あ" + "゚")

まぁ何らかの検討はあったんだろうけど・・・
0642デフォルトの名無しさん (ワッチョイ 734c-JNK/)2017/01/25(水) 20:41:52.96ID:RfIl6u1t0
Swiftって確かに字数は少ないかもしれないが読みやすいかっていうと…
0643デフォルトの名無しさん (アウアウウー Sa67-WaXM)2017/01/25(水) 20:56:49.37ID:xQi6cekNa
じゃあ読みやすい言語ってどれだよ
0644デフォルトの名無しさん (スプッッ Sd1f-CBoF)2017/01/25(水) 21:09:38.61ID:d9MKwq+md
cobol
0645デフォルトの名無しさん (ワッチョイ 1342-3qL8)2017/01/25(水) 22:58:32.84ID:CYUx5EoW0
Java
Java
Java
Java
Java
0646デフォルトの名無しさん (ワッチョイ 1342-3qL8)2017/01/25(水) 23:07:52.05ID:CYUx5EoW0
とおもったけどC#
0647デフォルトの名無しさん (ワッチョイ 1342-3qL8)2017/01/25(水) 23:12:20.50ID:CYUx5EoW0
>>642
Swift字数おおくないか
ライブラリの名前がいちいち長ったらしいし
関数に引数の名前2つがデフォとかげんなりするし
try!に至ってはもう
0648デフォルトの名無しさん (ワッチョイ 0f4c-2P18)2017/01/26(木) 01:40:32.20ID:9A8WN5h/0
>>647
そ、そうね…
落ち着いて考えるとCで簡潔に書けることも長ったらしいし、それでいて読みにくい
Swiftって一体どこがいいんだろう…
0649デフォルトの名無しさん (ワッチョイ 2b10-Ve17)2017/01/26(木) 02:37:16.34ID:dAEo4WV40
引数名がない言語の方が見た目はシンプルだけど、特にtrue/falseだけのパラメータとかだと何してるかわかんないときがあって今となってはイラッとするな。
obj.doSomething(true, false, true)みたいなやつ
標準APIだとそういうのは良くないってわかってるのかあんまりないけど、誰かが適当に作ったライブラリだとそんなのがよく出てくる気がする
0650デフォルトの名無しさん (スッップ Sdca-2P18)2017/01/26(木) 03:07:53.57ID:26kSGCXVd
Swiftのラベル機能、アンダーバーってなんだよ
クソ過ぎやしないか?
Objective-Cのままでいいわまじで
0651デフォルトの名無しさん (ワッチョイ 833c-AZYz)2017/01/26(木) 07:35:18.87ID:8RDF259k0
トレーリングクロージャは良い点
それとクロージャ構文にプレフィックスが不要なところも
代わりにスコープブロックにdoが必要だけど2文字は許容範囲内
0652デフォルトの名無しさん (ワッチョイ 7e0d-Spol)2017/01/26(木) 08:13:25.19ID:O9H7zUJg0
>>641
Stringのメンバを見るとCharacterとUnicodeScalarは同列っぽいよ
どちらもUnicodeを内部エンコードに扱ってるからそれらはUnicode依存のフレームワークの様子だけど
同じ層にUTF8, UTF16もいるからいつかCharacterUTF8, UTF8Scalarみたいな構造体もできるかもなw
0653デフォルトの名無しさん (ワッチョイ 833c-AZYz)2017/01/26(木) 09:33:06.97ID:8RDF259k0
>>652
String.initに格差があってね
この差も疑問なんだけど

let ca:[Character] = ["a", "b", "c"]
let ua:[UnicodeScalar] = ["a", "b", "c"]

let cs = String(ca)
let us = String(ua) //これが出来ない

let us = String(ua.map(Character.init)) //これは出来る
0654デフォルトの名無しさん (アウアウウー Sa7f-4cPM)2017/01/26(木) 10:39:40.20ID:k8NBikxqa
Swiftに慣れるとSwift以外でのコーディングが煩わしくなるぞ
varとletの明確な使い分けも、それがない言語だと逆にモヤッとする
0655デフォルトの名無しさん (ワッチョイ 6ac9-P4zY)2017/01/26(木) 10:57:10.28ID:KCQLgRNZ0
Stringに関して言いたいことはメーリスで今のうちに言っとけよ
今ちょうどSwift4でStringどうするか議論の真っ最中だから
0656デフォルトの名無しさん (ササクッテロリ Sp13-vNtw)2017/01/26(木) 11:04:45.63ID:CKOy8ZWqp
4は破壊変更なしで、5の破壊変更混みで直すからまだ時間はあるなw
>>653もCharacterとUnicodeScalarをまとめた上位インターフェース作るだろ(適当
0657デフォルトの名無しさん (オイコラミネオ MM76-bF0B)2017/01/26(木) 11:10:44.87ID:NOZ2YrK+M
オプショナルバインディングの利点ってなんだろう?
言葉で説明するのは難しいですわ
nilチェックして強制アンラップでもいいだろって思われそう
どう思う?
0658デフォルトの名無しさん (オイコラミネオ MM76-bF0B)2017/01/26(木) 11:15:35.23ID:NOZ2YrK+M
と思っけど失敗のあるイニシャライザ使う時めっちゃ便利だわ
Appleのリファレンスは説得力あるわ
0659デフォルトの名無しさん (ワッチョイ 1b3c-R94c)2017/01/26(木) 23:16:58.81ID:ufLIfALs0
BB2C使って書き込みしてるけど、こういうブラウザアプリってどうやって作られてるの?
初心者だから全然想像できん
0660デフォルトの名無しさん (ササクッテロリ Sp13-vNtw)2017/01/27(金) 08:27:01.41ID:Zy0rRYCMp
>>659
定期乙
0661デフォルトの名無しさん (ワッチョイ 6f5b-ci5U)2017/01/27(金) 17:31:32.73ID:MVo+YM4y0
>>650
俺は重宝してるけど。

_ = someMethod()
0662デフォルトの名無しさん (ササクッテロリ Sp13-vNtw)2017/01/29(日) 13:24:08.53ID:MpcYD/kyp
let宣言しなくても変数_って使えたのか
いつ変わったんだ、便利じゃねーか
0663デフォルトの名無しさん (ワッチョイ 833c-T3y8)2017/01/29(日) 14:08:41.99ID:PyqVv5fH0
>>662
宣言じゃなくて、定義じゃね?
0664デフォルトの名無しさん (ワッチョイ 9733-4cPM)2017/01/29(日) 15:05:33.45ID:3Y3DXVvV0
アンダーバーってクソすぎやしないか
0665デフォルトの名無しさん (ササクッテロラ Sp13-4cPM)2017/01/29(日) 15:25:26.09ID:yL6xb8U5p
アンダーバーでいいと思います。
0666デフォルトの名無しさん (ワッチョイ 833c-T3y8)2017/01/29(日) 17:02:22.62ID:PyqVv5fH0
アンダスコア
0667デフォルトの名無しさん (スッップ Sdca-2P18)2017/01/29(日) 17:03:21.38ID:htBmfO4kd
アンダースコアや三点リーダー、クソ過ぎやしないか
0668デフォルトの名無しさん (アウアウウー Sa7f-4cPM)2017/01/29(日) 17:19:12.25ID:EnysbUOea
許容範囲だと思います。
0669デフォルトの名無しさん (ワッチョイ 9739-4eSF)2017/01/30(月) 07:33:20.34ID:qYAaUQoA0
_ の書き方はともかく

引数にラベルが必須でないというのは
可読性の確保という面で
選択肢として存在するのはアリだと思うな
0670デフォルトの名無しさん (ワッチョイ 2b8c-EfrK)2017/01/30(月) 08:01:35.96ID:Jmyw1tRr0
C APIをSwiftから叩くために選択肢どころか必須機能なんだよなぁ
ObjCみたいにC APIだけは別の表記するならいいけどさ
0671デフォルトの名無しさん (スップ Sdca-eBhG)2017/01/30(月) 09:17:47.99ID:djGawl3Pd
swiftいいよ書きやすいよ
最近の次世代言語は関数型ばかりだからswiftが最後の希望や
0672デフォルトの名無しさん (ワッチョイ 833c-AZYz)2017/01/30(月) 17:37:30.67ID:5ceKaohv0
ネタ
DictionaryのValueをOptionalにした場合の
削除とnil設定のオーバーロード区別
http://swiftlang.ng.bluemix.net/#/repl/588ef6a306f99d213b3a7f3a
0673デフォルトの名無しさん (ワッチョイ 833c-AZYz)2017/01/30(月) 20:30:32.06ID:5ceKaohv0
ついでに今更ながら>>498の対策
http://swiftlang.ng.bluemix.net/#/repl/588f20efcf58891f104c975c

どちらにも言えることだけど
意味的に異なるオーバーロードがあると厄介
0674デフォルトの名無しさん (ワッチョイ 9733-4cPM)2017/01/31(火) 08:04:31.17ID:TojTxigN0
詳解Swift 第2版と第3版ってやっぱ内容だいぶ違う?
仕様ころころしててイライラしてるんだけど
0675デフォルトの名無しさん (スプッッ Sd6a-eBhG)2017/01/31(火) 09:09:51.57ID:qlhVwcaGd
その程度でイライラするならswift向いてないよ
0676デフォルトの名無しさん (ササクッテロリ Sp13-vNtw)2017/01/31(火) 10:07:32.51ID:Wlpmu9Pop
だいぶ違うし、4版が出るならまた変わってるだろうなぁ
破壊変更がないとしてもだ

なんで詳細Swiftなんて買ったと言わざるをえない
Qiitaで直近の記事を漁った方がよほど有効だろうよ
0677デフォルトの名無しさん (ワッチョイ afc9-4cPM)2017/01/31(火) 10:44:07.96ID:IISx8Cj70
>>672
keySortedメソッドの引数
by:(Key,Key)->Bool

がよく判りません。
Key型を要素とするタプルを取ってBoolを返すclosure byって意味なんだと思いますが、Key型ってなんですか?
0678デフォルトの名無しさん (アウアウウー Sa7f-4cPM)2017/01/31(火) 10:57:03.39ID:13oBEuV5a
タプルってw
引数を2つとってBoolを返すクロージャだろ
0679デフォルトの名無しさん (オイコラミネオ MM76-bF0B)2017/01/31(火) 11:38:05.84ID:5xUQa1EZM
Keyはラベルです
0680デフォルトの名無しさん (ワッチョイ 833c-AZYz)2017/01/31(火) 12:46:54.40ID:E6Yo5vL90
>>677
ジェネリクスの型パラメータ名

http://swiftdoc.org/v3.0/type/Dictionary/
> struct Dictionary<Key : Hashable, Value>

extensionの中では元定義にある型パラメータ(Key, Value)や
Associated Types(Element, Indexなど)が使える

[Int:Int?] は Dictionary<Int,Int?> の糖衣構文
0681デフォルトの名無しさん (ワッチョイ afc9-4cPM)2017/01/31(火) 14:26:38.67ID:IISx8Cj70
>>680
納得です。
ジェネリクスの型パラメータなんですね!

それでも、こう書くとコンパイルできない。なんでだ?
func keySorted(by:(Key, Key)->Bool) -> [(Key,Value)] {a, b in
return self.sorted{by(a.key,b.key)}
0682デフォルトの名無しさん (ワッチョイ 833c-AZYz)2017/01/31(火) 14:49:05.08ID:E6Yo5vL90
>>681
1つ目の{は関数本体の始まり、2つ目の{がクロージャー

func keySorted(by:(Key, Key)->Bool) -> [(Key,Value)] {
  return self.sorted {a, b in
    by(a.key, b.key)
  }
}
■ このスレッドは過去ログ倉庫に格納されています