2016-11-18 61 views
2

在试验Swift的时候,我发现了许多有用的方法和函数,它们都以下划线为前缀。例如,字符串有一个隐藏的_split()方法。由于某些原因,功能_sin()_cos()(但不是_tan_sqrt)也可以默认使用。实际上,当我输入sin(2.0)时,REPL实际上建议我使用这些功能。我不会导入Foundation或任何导入Foundation的东西。Swift下划线方法和函数做什么?

为什么Swift会提供这些“隐藏”功能,特别是我希望成为数学模块而不是内置函数的trig函数。

+0

我*假设*是'_sin'和'_cos'请参阅 “LLVM内部函数”,见 “UnaryIntrinsicFunctions” 在https://github.com/apple/swift/blob/ 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

您将在苹果平台上使用'import Darwin'获取全套三角函数,在Linux上使用'import Glibc'。 –

回答

0

以下划线开头的东西不适用于公共消费,只会因内部原因(例如因为标准库不能使用@testable而进行测试)公开。

通过Dave Abrahams

+0

我可以理解为什么有'._split()',但是现在Swift标准库究竟使用sin(x)和cos(x)是什么呢? –

+0

已在您的主文章正下方的评论中回复。 ;)检查第一个GitHub链接。 – DevAndArtist

+0

你可以添加一个链接到该报价的来源吗? –