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

Swiftスレ

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2014/06/03(火) 04:12:21.08ID:rEEU5ykv
WWDC2014で発表されたAppleの新言語Swiftについて語りましょう
https://developer.apple.com/swift/
0002デフォルトの名無しさん2014/06/03(火) 04:17:00.47ID:u4jrgx59
Apple Developer
https://developer.apple.com/swift/

iBooks: The Swift Programming Language
https://itunes.apple.com/jp/book/swift-programming-language/id881256329?mt=11
0003デフォルトの名無しさん2014/06/03(火) 04:34:50.18ID:0Yv/wN/p
Objective-Cのキモイ書き方から解放されるっていう意味では歓迎したい
0004デフォルトの名無しさん2014/06/03(火) 04:38:13.14ID:RuKqYDTE
はえーよw
0005デフォルトの名無しさん2014/06/03(火) 04:42:17.80ID:FE8l7XVP
javascriptみたいなやつか?
0006デフォルトの名無しさん2014/06/03(火) 04:49:00.24ID:nzrdKQgu
発表してすぐにドキュメント公開とは、さすが
オープンソースベースのIDEすら未完成のどっかとは違うな
0007デフォルトの名無しさん2014/06/03(火) 04:57:41.31ID:WOckUK4g
LLVMでScalaっぽいのつくりましたって感じか?
マカじゃないから羨ましい悔しい
0008デフォルトの名無しさん2014/06/03(火) 05:25:48.47ID:FE8l7XVP
kindleで配布はよ
ていうかwebでドキュメント公開しないところがいやらしいな
マカー以外も興味ある人多いのに
0009デフォルトの名無しさん2014/06/03(火) 05:38:35.52ID:rEEU5ykv
書籍の形にはなってないけどドキュメント

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
0010デフォルトの名無しさん2014/06/03(火) 05:39:22.69ID:siem544m
やばい、ナウでヤングでいけてる、それで性能もいいというし。
これからiosとosxの開発賑わうのでは?
若者をapple自軍に呼び込む召喚魔法になりそう
0011デフォルトの名無しさん2014/06/03(火) 05:49:11.67ID:QNehfQ3/
開発環境は?
0012デフォルトの名無しさん2014/06/03(火) 05:59:22.34ID:rEEU5ykv
>>11
今のところbeta版のXcode 6がSwift対応らしい
https://developer.apple.com/xcode/downloads/
0013デフォルトの名無しさん2014/06/03(火) 06:10:21.67ID:soMTJmL9
Objective-C と見た目が違い過ぎて笑う。
でも、流石にObjective-Cよりは遅いんじゃないか?
0014デフォルトの名無しさん2014/06/03(火) 06:13:05.29ID:NLcqYubo
はやすぎワラタw
0015デフォルトの名無しさん2014/06/03(火) 06:31:52.93ID:mG676Gbl
TypeScriptに似てるね。
0016デフォルトの名無しさん2014/06/03(火) 06:32:47.09ID:rEEU5ykv
>>13
WWDCではObjective-Cより速いってグラフ出してたけどどうなんだろうな
もともとLLVMを念頭に置いて設計されてるから有利なのかも?
0017デフォルトの名無しさん2014/06/03(火) 06:46:58.26ID:0v65KPbJ
Microsoftをパクってきたのか。
0018デフォルトの名無しさん2014/06/03(火) 06:50:33.89ID:Fqc6zuT2
結局、なんの言語のパクリなのか、まとめといてくれ。
0019デフォルトの名無しさん2014/06/03(火) 06:51:51.09ID:9Ltabfc6
早いよ。 マシンレベルでも最適化されるし言語仕様自体見ても高速に動きそう。
0020デフォルトの名無しさん2014/06/03(火) 06:52:31.51ID:9Ltabfc6
>>18 Clangの発展形。
0021デフォルトの名無しさん2014/06/03(火) 06:56:19.45ID:9Ltabfc6
新しいプログラミング言語 Swift
http://dev.classmethod.jp/smartphone/swift/

米アップル、iOSアプリの新開発言語にSwiftを導入
http://ggsoku.com/2014/06/ios-8-swift/
米アップルは2日(現地時間)、iOS 8に新開発言語「Swift」を導入すると発表した。

Swiftは非常に軽快に動くことが特徴であり、Objective-CとC言語の中間に位置するようなイメージであるという。
コード体系はC言語を踏襲。
CocoaやCocoa Touchに対応することはもちろん、LLVMコンパイラを利用してビルドされる。

LLVM
http://ja.wikipedia.org/wiki/LLVM
LLVM とは、コンパイル時、リンク時、実行時などあらゆる時点でプログラムを最適化するよう設計された、任意のプログラミング言語に対応可能なコンパイラ基盤である。

LLVM は、JavaとJava VMの関係のように、まず仮想機械をターゲットとした中間コード(ビットコード)を生成し、その仮想機械向けコードを特定のマシンの機械語に変換する。

playgrounds を使うとインタラクティブに実行できる。
https://developer.apple.com/library/prerelease/ios/referencelibrary/GettingStarted/LandingPage/Art/largeshot_2x.png
0022デフォルトの名無しさん2014/06/03(火) 07:12:38.78ID:iQXQSz/x
Enumもあるし、Genericsもあるのか。ますますTypeScriptに近いな

Swiftのprotocolっていうのは、TypeScriptのアンビエント宣言のことかな?
0023デフォルトの名無しさん2014/06/03(火) 07:16:40.40ID:iQXQSz/x
タイプセーフ言語らしい。

Type Safety and Type Inference

Swift is a type safe language. A type safe language encourages you to be clear about
the types of values your code can work with. If part of your code expects a
String, you can’t pass it an Int by mistake.

Because Swift is type safe, it performs type checks when compiling your code and
flags any mismatched types as errors. This enables you to catch and
fix errors as early as possible in the development process.
0024デフォルトの名無しさん2014/06/03(火) 08:32:34.25ID:tLJazyzK
1レスでマスターできるSwift言語入門
他言語のよせあつめだから、マスターするにはこれだけで十分w
(まあざっとしか見てないから間違ってたらすまん)

タイプセーフ言語。全般的に型ある。型キャストもある。
Generics搭載、アトリビュートあり

var(変数)とlet(定数)。変数・引数の定義は「名前: 型」の順番
文字列リテラル = よくある文字列クラス。文字列の中で変数展開や関数実行可能
for、for in、while、do while、if、swtchがある。
ループ系はラベルが使えてbreak、continueできるタイプ
switchは、caseにそこそこ色んなモノが使えてFallthroughキーワードでフォールするタイプ

関数はfuncで定義。デフォルト引数と名前付き引数が使える。
可変引数は...、inoutキーワードで引数で戻り値を返せる。クロージャある。アロー演算子もある。

タイプセーフEnum。おなじみのclassとstruct。thisはself。
(たぶん)単一実装継承。インターフェース(protocols)継承は複数可能
overrideキーワード、プロパティ(set、getキーワード)あり
コンストラクタ=init、デストラクタ=deinit。
自動リファレンスカウンタ方式。Weak Referencesあり
extensionで既存クラス拡張可能

例外、try-catchは不明(なし?)
0025デフォルトの名無しさん2014/06/03(火) 08:39:53.35ID:SsmCsZ51
>>20
clang は言語か?
0026デフォルトの名無しさん2014/06/03(火) 08:44:53.58ID:Tlzh3MoL
どっかで見たような言語だな。
0027デフォルトの名無しさん2014/06/03(火) 08:46:43.13ID:va6vQ78Z
米アップル、iOSアプリの新開発言語にSwiftを導入
http://ggsoku.com/2014/06/ios-8-swift/
米アップルは2日(現地時間)、iOS 8に新開発言語「Swift」を導入すると発表した。

Swiftは非常に軽快に動くことが特徴であり、Objective-CとC言語の中間に位置するようなイメージであるという。
コード体系はC言語を踏襲。
CocoaやCocoa Touchに対応することはもちろん、LLVMコンパイラを利用してビルドされる。

LLVM
http://ja.wikipedia.org/wiki/LLVM
LLVM とは、コンパイル時、リンク時、実行時などあらゆる時点でプログラムを最適化するよう設計された、任意のプログラミング言語に対応可能なコンパイラ基盤である。

LLVM は、JavaとJava VMの関係のように、まず仮想機械をターゲットとした中間コード(ビットコード)を生成し、その仮想機械向けコードを特定のマシンの機械語に変換する。

http://www.apple.com/apple-events/june-2014/
0028デフォルトの名無しさん2014/06/03(火) 08:49:02.50ID:WvSy6YGV
>>24
例外無いの?
golangと同じかね
0029デフォルトの名無しさん2014/06/03(火) 08:51:46.23ID:L+zlmaIc
               ノ      ゚.ノヽ  , /}      ...
            ,,イ`"     、-'   `;_' '    ..::::::::::::::...
   ,-、  _.._   (        (,(~ヽ'~     ..:::::::::::::::::::::::
 )'~  レー'  〉   ヽ       i`'}       .:::::::::::::::::::::::
 ~つ     '-ー、  i       | i'     ...:::::::::::::::::::::::
 /       <  /     。/   !  ......:::::::::::::::::::::::::    これは>>1乙じゃなくて
/         ~^´     /},-'' ,●::::::::::::::::::::::::::::::::::::
i、        ,i' _,,...,-‐-、/    i  ::::::::  .:::::::::::::
..ゝ        <,,-==、   ,,-,/      .:::::::::::            放射能がうんたら
 )       {~''~>`v-''`ー゙`'~       ..:::::::::                          ........::.
 {        レ_ノ            ..::::::::.                         ......:::::::::
ノ         ''           ..:::::::                        ...::.:...:::::::::
                     .:::::::::                     ...:......:::::::::::: .
                    .:::::::::::.        .....      ..  ..::::::::::::::::::::::::   :::.
                    ::::::::::::::::.::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. ::  ::..
                    .:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::    ::.
                    ::::::::::::::::: :::::::::::::::::::::::::::::: :::::
                          .::    ::.  :::

javascript ジェネレータはよ
0030デフォルトの名無しさん2014/06/03(火) 08:55:32.79ID:va6vQ78Z
Welcome to Swift
https://developer.apple.com/library/prerelease/ios/referencelibrary/GettingStarted/LandingPage/index.html

なんというか
一言で言うとダサい言語だな
0031デフォルトの名無しさん2014/06/03(火) 08:56:46.37ID:Tlzh3MoL
>>28
ざっと見たけど見当たらなかった。
どこかに書いてあるのかねぇ。
0032デフォルトの名無しさん2014/06/03(火) 08:57:48.29ID:uZjFICqp
これでObj-C食ったら皆得だな
0033デフォルトの名無しさん2014/06/03(火) 08:58:42.76ID:Tlzh3MoL
Objective-Cはさすがに古臭すぎて
やりたくなかったが、これで消え去れば最高だね。
Swiftの方がJavaScriptに似てるからいいよ。
0034デフォルトの名無しさん2014/06/03(火) 09:10:47.58ID:BwOFmS9H
NS遺伝子のジョブズ消えたから発表できたのか
0035デフォルトの名無しさん2014/06/03(火) 09:30:10.40ID:9Ltabfc6
>>29 Javascript コンパイラは有るみたいだよ。
Emscripten is an LLVM to JavaScript compiler
https://github.com/kripken/emscripten/wiki

Swiftは次の様なコンパイル手順を取ってる。

Swift > Clang > LLVM byte code > マシン語
だからこんな感じになるのでは

Swift > Clang > LLVM byte code > Emscripten > Javascript

またLLVM中間語をわざわざコンパイルしなくてもそれ自体を実行できるJavascriptも存在しているようだから、そのままHTMLで使える。
LLVM.js - Badass JavaScript

Ruby, Python, Haskell, Java, D, PHP, Pure, Lua 等へもコンパイルできるらしい。
これは夢が広がるな。
0036デフォルトの名無しさん2014/06/03(火) 09:35:53.62ID:t1I4ETzW
とりあえずつい最近Objective-Cの勉強始めた俺からするとめちゃくちゃ嬉しいwww
いやー早速rMBP15 rate 2013をXcode6とYosemiteにして遊んでるがめっちゃ簡単やん!TypeScriptやん!普段仕事はC#.NETやからめっさ馴染み深いシンタックスやん!!楽勝やんこれwww
ほんま如何にObjective-Cが難しかったかよくわかるわー、これでコーディングやなくてアプリの中身そのものにリソース注げるわー
0037デフォルトの名無しさん2014/06/03(火) 09:40:34.97ID:Y/pEIVnr
今風のcって感じだな
大して目新しい機能はなさそうだけど、今さらobjcよりましと思う
0038デフォルトの名無しさん2014/06/03(火) 09:45:10.46ID:t1I4ETzW
いやでもこれでXamarin必要なくなるwww
あのクソ高くてふざけた制限ばかりのサブスクリプションを契約しなくてよくなるwww
マジXamarinざまぁwww
0039デフォルトの名無しさん2014/06/03(火) 09:46:10.84ID:va6vQ78Z
>>34
ジョブスなら歓迎するはず
0040デフォルトの名無しさん2014/06/03(火) 09:50:18.20ID:9Ltabfc6
そもそもCocoaの遺伝子がLLVMに受け継がれそれが発展してSwiftが生まれたんだから正常進化形だな。
0041デフォルトの名無しさん2014/06/03(火) 09:57:27.88ID:RuKqYDTE
誰が一番最初にSwiftインタプリタ実装するか勝負だ!

てかLLVMってことはemscriptenで簡単にJSにできたりするかな?
新たなaltJSの誕生である。
0042デフォルトの名無しさん2014/06/03(火) 09:59:34.95ID:RuKqYDTE
>>38
C#が使えるってだけならXamarinいらんけど、
Xamarinの価値はAndroidやWindowsターゲットとも主にモデル等でコード共有出来るってとこじゃねえの?
俺使ったことないし知らんけど
0043デフォルトの名無しさん2014/06/03(火) 10:00:18.19ID:d3S2ffsw
>>31 が言うように例外処理が書いてないなぁ
ゼロ割りは error だけど overflow operator 使えば 0 になるよ、とは書いてあるが
error になったらどうなるのかが書いてねぇ
0044デフォルトの名無しさん2014/06/03(火) 10:03:39.83ID:S1JFtVB8
いまどきの新しめの言語機能を全部ぶち込んだような言語だな。
静的型の型推論、クラスベース、関数型の機能もある。クロージャもある。演算子オーバーロードもある。
そしてガベコレなし。GCは結局それほど良い物ではなかったと明らかになってきたな、最近は。
(いまだにヌルサクに動かないAndroid見れば分かる)
動的型に対する静的型の反撃、LLVMベースと
ある意味、この10年ほどの紆余曲折が全部込められてるw

システムレイヤからアプリケーションレイヤ、エンタープライズから3Dゲームまで幅広く対応できるんじゃね?
Appleオンリーのクローズドな言語ということを抜きにすれば神がかってるわw

とりあえずさー、JavaScriptとはかなり距離の遠い言語だぞw 共通項はC風構文ってくらいだ。
JavaScriptに似てるって言うやつのプロフ見るとほぼウェブ屋だから
やっぱウェブ屋は世界狭いんだなとか思ってるよ(´・ω・`)
もっとも、そういう人達も表向きJavaScriptに近い感覚で使えるというのはいいことだと思うね。
0045デフォルトの名無しさん2014/06/03(火) 10:06:21.04ID:d3S2ffsw
ガベコレはまんまARCだろ
0046デフォルトの名無しさん2014/06/03(火) 10:07:55.16ID:9Ltabfc6
>>41 行けると思うよ。 LLVMバイトコードは同じはずだから。
0047デフォルトの名無しさん2014/06/03(火) 10:11:30.41ID:9Ltabfc6
>>46 まさかWindowsのJITで動いたりしてくれないよな。 あれもLLVMだから同じバイトコードを使ってるはず。
0048デフォルトの名無しさん2014/06/03(火) 10:12:00.54ID:L+zlmaIc
>>41
もうあるだろ
0049デフォルトの名無しさん2014/06/03(火) 10:13:41.37ID:t1I4ETzW
これIronSwiftとかゆってVSで新規プロジェクト作成からコーディングまでできたらうんこ漏らすわw
リモートでコンパイル・デプロイまでできたら最強やな、はよ
0050デフォルトの名無しさん2014/06/03(火) 10:26:42.14ID:Fqc6zuT2
言語仕様の内側だけ見ると、あまりにも個性のない言語だね。

反面、外側を見ると、あのAppleのベンダー独自言語ってとこと、LLVM向けに設計ってとこが特徴的ではある。
0051デフォルトの名無しさん2014/06/03(火) 10:48:29.11ID:4aJXakc5
lisp屋だけど、引き続きMacでは仕事がないか。
0052デフォルトの名無しさん2014/06/03(火) 10:50:09.75ID:4aJXakc5
>>44
こんなスレたってるぞ
TypeScript(MS) VS Swift(Apple)
http://peace.2ch.net/test/read.cgi/tech/1401758403/

1 デフォルトの名無しさん sage 2014/06/03(火) 10:20:03.13 ID:Tlzh3MoL
まあ、どちらもタイプセーフJavaScriptという
似たような言語なんだから仲良くしろや。
0053デフォルトの名無しさん2014/06/03(火) 11:12:45.60ID:JVBQ3X9G
>>24
すげえ、もうだいたい書けそう
ちょっとした経験者ならすぐ作れそうだな
Web開発者を取り込みたい狙いもあるんかもしれん
0054デフォルトの名無しさん2014/06/03(火) 11:13:03.13ID:L8tGCPp+
ベンダロックインされてなかったら、Script言語が軒並み死んでたな。
僕の考えた最強の言語を実体化させんなと。
0055デフォルトの名無しさん2014/06/03(火) 11:26:50.98ID:RuKqYDTE
DartががっかりJavaもどきだったからな
期待している
0056デフォルトの名無しさん2014/06/03(火) 11:28:40.77ID:u2cAAs6G
プログラミング言語swift公式ページ
http://swift-lang.org/
0057デフォルトの名無しさん2014/06/03(火) 11:30:54.27ID:u2cAAs6G
swiftはiOSとMac OS X用のDSLである。
汎用言語ではないのでマカー以外は解散!
0058デフォルトの名無しさん2014/06/03(火) 11:31:03.42ID:UTo3AZ7I
>>54
LLVM3.6で追加されるよ
0059デフォルトの名無しさん2014/06/03(火) 11:31:55.13ID:RuKqYDTE
>>56
それ別のSwiftや

なんで名前被らせたんだろうな
0060デフォルトの名無しさん2014/06/03(火) 11:41:30.74ID:ymd/m1MP
>>46 ID:9Ltabfc6
>>47 ID:9Ltabfc6

自演失敗か
0061デフォルトの名無しさん2014/06/03(火) 11:44:01.73ID:92ySfIuy
今更IntにするならIntegerにしろよと思った
0062デフォルトの名無しさん2014/06/03(火) 12:00:46.02ID:9AiAEfmm
IntにしたのはInt32とかUInt16とかもあるからじゃないか
0063デフォルトの名無しさん2014/06/03(火) 12:10:44.59ID:aTPhR8I0
ARCもそだけど、GC(VM上でアプリが動く)というならWindowsPhoneやFireFoxOSはそんなに重くない。消費電力は知らん。
0064デフォルトの名無しさん2014/06/03(火) 12:20:16.27ID:UatVHvvj
IntがIntegerじゃないのは、

JavaScriptに対して言われていた
「functionってなげーよwww」対策だろう。

長いって言うなら、funcって略すよ(Swift談)
Intergerも長いっていうんだろ? Intって略すよ。

たぶんこれ。
0065デフォルトの名無しさん2014/06/03(火) 12:23:12.43ID:dLpXwHsH
TypeScriptでいいや
0066デフォルトの名無しさん2014/06/03(火) 12:23:51.45ID:92ySfIuy
ああfuncって気付いてなかった
省略方針なのね
0067デフォルトの名無しさん2014/06/03(火) 12:29:19.32ID:XlUvQuDj
Cの関数はそのまま呼べるの?
0068デフォルトの名無しさん2014/06/03(火) 12:29:45.33ID:u2cAAs6G
functionだろうがfuncだろうが、関数を特別視すんなよ。
第一級関数なら変数と同じ扱いができるだろ。
0069デフォルトの名無しさん2014/06/03(火) 12:30:37.08ID:RuKqYDTE
elsifじゃなくてよかったw
0070デフォルトの名無しさん2014/06/03(火) 12:34:42.13ID:UatVHvvj
>>67
型が違うのだから呼べるわけがない。

>>68
> 第一級関数なら変数と同じ扱いができるだろ。

それは言語の発展と逆行した考え方だぞ。

命令もデータも区別がないというのがノイマン型コンピュータ。
コンピュータにとっては区別がなくていいが、
俺らは人間。人間にとってわかりやすいようすると
汎用的な概念から、どんどん特殊化する。

たとえばgoto一つあればできることが、
ループやbreakやcontinueや例外などに細かい概念に別れた。
0071デフォルトの名無しさん2014/06/03(火) 12:36:05.68ID:sk2oOubr
例外処理はどうなってるんだ?
0072デフォルトの名無しさん2014/06/03(火) 12:38:04.11ID:sk2oOubr
>>67
呼べる。
0073デフォルトの名無しさん2014/06/03(火) 12:38:47.16ID:6F7AkFO6
初見で書いてあることが分かった気になれるところがいいね。
Objective-Cなんてさっぱりわからんかったから。
0074デフォルトの名無しさん2014/06/03(火) 12:40:51.80ID:RuKqYDTE
Obj-Cから例外は使うなって方針だったから無くなるのはまぁ
0075デフォルトの名無しさん2014/06/03(火) 12:42:17.52ID:XlUvQuDj
>>70 >>72
どっちだよw
0076デフォルトの名無しさん2014/06/03(火) 12:44:34.65ID:/HreOboq
例外無いのなら嬉しいわ
0077デフォルトの名無しさん2014/06/03(火) 12:45:44.32ID:9AiAEfmm
そのままでは呼べないが、Objective-Cのコードを介在すればC言語の関数を呼べる感じだな
0078デフォルトの名無しさん2014/06/03(火) 12:50:30.70ID:9Ltabfc6
>>75 呼べるに決まってるだろ。 呼べなかったらOBJ-CとSwiftをどうやってマージして使うんだよ。
0079デフォルトの名無しさん2014/06/03(火) 12:52:13.32ID:UatVHvvj
>>78
重要なのは「そのまま」かどうかだよ。

呼べるか呼べないかで言えば、JavaからC言語だって呼べるし
ラッパー作ればバッチファイルからだってC言語ライブラリ呼べるさw
0080デフォルトの名無しさん2014/06/03(火) 13:01:40.44ID:XlUvQuDj
そりゃラッパーかませば呼べるのは分かるよ
swiftの関数内でそのまま例えばfreadとかできるのかが知りたいんだ

ランタイムは共通とか言ってた気がするから
ObjCで書いてコンパイルされたフレームワークで定義されたクラスやメソッドなんかは
構文が変わるだけで直接呼べるのだよね?
0081デフォルトの名無しさん2014/06/03(火) 13:09:10.15ID:UatVHvvj
だからC言語の関数をそのまま実行するのは無理だって。

そもそもC言語の場合コンパイルしてしまえば、
バイナリから関数名も引数の順番も数もそういった情報はなくなってしまう。

それを補うのがC言語のヘッダファイルなわけで。

swiftがC言語のヘッダファイル(プリプロセッサ含む)を
解釈できるのでないかぎり、C言語の関数をそのまま実行するのは無理。
0082デフォルトの名無しさん2014/06/03(火) 13:17:40.99ID:FnIPHf/f
関数宣言を与えただけで呼び出せるのなら、それはそのまま呼び出せるのと違わん
0083デフォルトの名無しさん2014/06/03(火) 13:18:54.28ID:UatVHvvj
関数宣言を与えても呼び出せないので、
SwiftはC言語の関数をそのまま呼べないという話。
0084デフォルトの名無しさん2014/06/03(火) 13:19:20.45ID:9AiAEfmm
C言語のコードをコンパイルしただけでは関数名は無くならないだろ
0085デフォルトの名無しさん2014/06/03(火) 13:22:35.28ID:UatVHvvj
関数名は残っていたな失敬失敬w

でも引数の型や数といった情報は消えてしまう。
呼びだそうにも何を渡せばいいかわからない。
0086デフォルトの名無しさん2014/06/03(火) 13:24:31.40ID:XlUvQuDj
基本的にはObjCと違って全部Swift内で完結せよというスタイルで
Cで書かれたライブラリを使いたいならObjCでラッパークラスを作るか
素直に全部ObjCで書けということなのかな

あまりお世話になることはなさそうかな
0087デフォルトの名無しさん2014/06/03(火) 13:24:52.63ID:9AiAEfmm
Swiftの処理系はC言語形式のヘッダファイルを解釈できるみたいだよ?
ただそれによって利用可能になるのはObjCの形式で宣言したオブジェクトの定義だけみたいだが
0088デフォルトの名無しさん2014/06/03(火) 13:28:06.12ID:XlUvQuDj
>>87
それって
https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/index.html
のどの章あたりに書いてあります?
0089デフォルトの名無しさん2014/06/03(火) 13:28:09.49ID:x2ex+shd
>>87
ソース持ってきたら話を聞いてやってもいい。
0090デフォルトの名無しさん2014/06/03(火) 13:29:17.83ID:sL9VpNby
C言語のヘッダファイルって、
ヘッダファイル専用の特殊形式ってわけでもなく、
Cコンパイラそのまま実装していなければ、
解釈不可能なはずだけどねぇw
0091デフォルトの名無しさん2014/06/03(火) 13:30:24.57ID:9AiAEfmm
Obj-CとSwiftのコードの混在はこの辺だ
https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html
0092デフォルトの名無しさん2014/06/03(火) 13:30:54.21ID:RuKqYDTE
Using Swift with Cocoa and Objective-C
https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/index.html#//apple_ref/doc/uid/TP40014216-CH2-XID_0
0093デフォルトの名無しさん2014/06/03(火) 13:32:25.88ID:Vd9fiKAu
「ObjCの形式で宣言したオブジェクト」って言ってる時点で、
それ普通のC言語のヘッダファイルじゃないからw

Objective-CはC言語じゃないんだよ。
C言語の範疇から外れたものしか扱えないって
言ってるようなもんじゃんかw
0094デフォルトの名無しさん2014/06/03(火) 13:32:40.27ID:XlUvQuDj
>>91
なるほど、んじゃプロジェクトの特定のクラスだけObjCにするようなことは容易にできるわけだ
0095デフォルトの名無しさん2014/06/03(火) 13:35:51.48ID:2DJZsrYR
ほうほう、紛らわしいことにC言語とは全く互換性がない
Objective-C用のヘッダファイルというものがあるわけか。

http://www.atmarkit.co.jp/ait/articles/1404/09/news029.html
>
> クラスの宣言
>
>  クラスを作成するには、このクラスがどんなクラスなのかを宣言する必要があります。
> クラスの宣言はヘッダーファイル(.h)に書きます。そして、
> クラスを宣言するには@interfaceと@endを使用して以下のように書きます。

>  クラスやクラスに定義されるメソッドの実装は実装ファイル(.m)に記述します。
> クラスを実装するには@implementationと@endを使用して以下のように書きます。
>
> @implementation クラス名
> @end
>  @implementationと@endの間にクラスを実装していきます。従って、Personクラスでは以下のように記述します。
>
> @implementation Person
> @end

> また、実装ファイルには対応するヘッダーファイルを#importで読み込む必要があります。
> 以下のようにして、Person.hをインポートするようにしましょう。
>
> #import "Person.h"
> @implementation Person
> @end
0096デフォルトの名無しさん2014/06/03(火) 13:36:04.76ID:RuKqYDTE
Obj-CはCの仕様を完全に含んでるよ
0097デフォルトの名無しさん2014/06/03(火) 13:36:46.70ID:JVBQ3X9G
>>71
throw try catchがなくて??ってなってる
0098デフォルトの名無しさん2014/06/03(火) 13:37:22.18ID:Nh2RM5Lo
>>94
> なるほど、んじゃプロジェクトの特定のクラスだけObjCにするようなことは容易にできるわけだ

できない。

というかそもそも、C言語にクラスというものが存在しない。
0099デフォルトの名無しさん2014/06/03(火) 13:37:49.46ID:6F7AkFO6
JNIみたいなもんじゃね。
ある程度の安全性を考えたら、直よりもJNIみたいな方がいいと思うが。
0100デフォルトの名無しさん2014/06/03(火) 13:39:10.62ID:Nh2RM5Lo
>>96
> Obj-CはCの仕様を完全に含んでるよ

で、Swiftで扱えるのは、C+αのα部分だけなんだろう?
それC言語の部分は扱えませんとw
0101デフォルトの名無しさん2014/06/03(火) 13:40:00.04ID:XlUvQuDj
>>98
ObjCと書いたのだが、何故Cが出てくる?
■ このスレッドは過去ログ倉庫に格納されています