2016-11-18 7 views
2

Swiftを試してみましたが、多くの有用なメソッドと関数の前にアンダースコアが付いています。たとえば、文字列には非表示の_split()メソッドがあります。何らかの理由で、機能が_sin()_cos()(但し、_tanまたは_sqrtではなく)もデフォルトで利用可能です。実際、REPLは実際に私がsin(2.0)と入力すると、これらの機能を使用するように提案します。私はFoundationをインポートしていないか、Foundationをインポートしています。Swiftはメソッドと関数が何をしていますか?

なぜスウィフトはこれらの「隠された」機能、特に組み込み関数の代わりに数学モジュールの一部であると思われるトリグ関数を提供していますか?

+0

ことで

* '_sin'と' https://github.com/apple/swift/blob/で "UnaryIntrinsicFunctions" を参照してください、 "LLVM組み込み関数" を参照してください。_cos'ことmaster/stdlib/public/core/BuiltinMath.swift.gybおよびhttp://llvm.org/docs/LangRef.html#intrinsic-functionsを参照してください。 - '_split'はhttps://github.com/apple/swift/blob/master/stdlib/public/core/StringLegacy.swiftで定義されています。 –

+0

Appleプラットフォームでは 'import Darwin'、Linuxでは' import Glibc'を使って三角関数の完全なセットを取得します。 –

答えて

0

アンダースコアで始まるものは一般消費者のためではなく、内部的な理由で(例:標準ライブラリでは@testableを使用できないため)テストされています。 I *を想定しDave Abrahams

+0

なぜ '._split()'があるのか​​理解できますが、Swift標準ライブラリでは、sin(x)とcos(x)を正確に使うのはどういうことでしょうか? –

+0

あなたのメインポストのすぐ下のコメントに回答しています。 ;)最初のGitHubリンクを確認してください。 – DevAndArtist

+0

その引用元へのリンクを追加できますか? –

関連する問題