[英]can't find swift darwin documentation
达尔文是Apple 开源项目的一部分 。 在那里,您可以查看macOS(如10.14.1 )和iOS(如11.0 )中的所有开源软件,以及有关Darwin和Apple通过BSD实现Unix的方法的文档。
此外,大多数Darwin API都是UNIX规范的实现(有一些显着的差异 ),因此只需查找许多UNIX文档站点中的任何一个,如下所示:
等🙂
您还可以使用手册页。 例如,在您的用例中,只需打开一个终端并输入man sqrt
:
SQRT(3) BSD Library Functions Manual SQRT(3)
NAME
sqrt -- square root function
SYNOPSIS
#include <math.h>
double
sqrt(double x);
long double
sqrtl(long double x);
float
sqrtf(float x);
DESCRIPTION
The sqrt() function compute the non-negative square root of x.
SPECIAL VALUES
sqrt(-0) returns -0.
sqrt(x) returns a NaN and generates a domain error for x < 0.
VECTOR OPERATIONS
If you need to apply the sqrt() function to SIMD vectors or arrays, using the following functions provided by the Accelerate.frame-
work may give significantly better performance:
#include <Accelerate/Accelerate.h>
vFloat vsqrtf(vFloat x);
vFloat vrsqrtf(vFloat x);
void vvsqrtf(float *y, const float *x, const int *n);
void vvsqrt(double *y, const double *x, const int *n);
void vvrsqrtf(float *y, const float *x, const int *n);
void vvrsqrt(double *y, const double *x, const int *n);
SEE ALSO
math(3)
STANDARDS
The sqrt() function conforms to ISO/IEC 9899:2011.
BSD December 11, 2006 BSD
您还可以使用在线手册页,以防更符合您的风格: https : //www.freebsd.org/cgi/man.cgi
sqrt
的文档可以通过运行man sqrt
。 大多数Darwin函数都是桥接到Swift的C函数,它们没有记录在Xcode中。
但是你要求实现,这与文档完全不同。 为了向您提供实现,您必须拥有所有源代码,而stdlib,Foundation和Darwin之类的东西不能直接提供,因为它们是预编译的。 其中一些是开源的,所以你原则上可以找到源代码,但是仍然很难知道这正是你正在使用的代码。 这是编译语言的典型特征,因为没有简单的方法来反编译它们。
也就是说,如Ben所说,大多数源代码都可以在各个地方使用,如果你知道在哪里看的话。 sqrt(Double)
是一个很好的例子,当它失败时,因为没有你可能想到的方式实现。 它由编译器通过__builtin_sqrt
直接内联。 在可以直接转换为fsqrt
操作的Intel处理器上,它可以是矢量化的,可以在编译时进行评估,也可以以各种其他方式进行内联。 在不同的平台上,有不同的选择。
在您的示例中,它在编译时计算并编码,就像您编写var result = 3.0
。 你可以在LLVM IR输出中看到这个:
echo "import Darwin; var result = sqrt(9.0)" | swiftc -emit-ir -O -
...
define i32 @main(i32, i8** nocapture readnone) local_unnamed_addr #0 {
entry:
store double 3.000000e+00, double* getelementptr inbounds (%TSd, %TSd* @"$S4main6resultSdvp", i64 0, i32 0), align 8
ret i32 0
}
...
因此,没有任何“实施”可以提升。 没有真正的sqrt
功能(尽管至少某些版本的macOS有假的 )。
也就是说,我同意相关的手册页不会以某种方式导入到Xcode中真的很烦人。 这可能需要做很多工作,因为这些函数的文档都是用troff编写的,这可能是转换为Xcode使用的doc格式的痛苦,但即使这样也很好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.