有没有办法在. swift文件中声明一个函数(编译成.swiftmodule),就像这样:

hello.swift

func hello_world() {
    println("hello world")
}

main.swift

import hello

hello.hello_world()

我也做了a git repo with these two files and a Makefile with the compile / link commands ready to go.目前我可以得到main.swift导入你好,但它目前无法链接…是否有另一个链接器标志我可以通过?目前Makefile是:

PWD=$(shell pwd)
APP_NAME=main
MODULE_NAME=hello
SWIFT_MODULE_PATH=$(PWD)/$(MODULE_NAME).swiftmodule
SDK=/Applications/Xcode6-Beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk


main : clean
xcrun swift $(MODULE_NAME).swift -emit-module -v
xcrun swift $(APP_NAME).swift \
    -o $(APP_NAME) \
    -sdk $(SDK) \
    -I $(PWD) \
    -Xlinker -sectalign \
    -Xlinker __SWIFT \
    -Xlinker __ast \
    -Xlinker 4 \
    -Xlinker -sectcreate \
    -Xlinker __SWIFT \
    -Xlinker __ast \
    -Xlinker $(SWIFT_MODULE_PATH) \
    -v
.swiftmodule描述了Swift模块的接口,但它不包含模块的实现.仍然需要一个库或一组对象文件来链接您的应用程序.这是一个修改版本的makefile,它同时创建libhello.dylib和hello.swiftmodule,并针对它们构建应用程序:
PWD=$(shell pwd)
APP_NAME=main
MODULE_NAME=hello
LIB_NAME=lib$(MODULE_NAME).dylib
LIB_PATH=$(PWD)/$(LIB_NAME)
SWIFT_MODULE_PATH=$(PWD)/$(MODULE_NAME).swiftmodule

main : clean
    xcrun swift \
        -emit-library \
        -o $(LIB_PATH) \
        -Xlinker -install_name \
        -Xlinker @rpath/$(LIB_NAME) \
        -emit-module \
        -emit-module-path $(SWIFT_MODULE_PATH) \
        -module-name $(MODULE_NAME) \
        -module-link-name $(MODULE_NAME) \
        -v \
        $(MODULE_NAME).swift
    xcrun swift $(APP_NAME).swift \
        -o $(APP_NAME) \
        -I $(PWD) \
        -L $(PWD) \
        -Xlinker -rpath \
        -Xlinker @executable_path/ \
        -v


clean :
    rm -rf $(APP_NAME) $(LIB_NAME) $(MODULE_NAME).swiftmodule $(MODULE_NAME).swiftdoc

在没有文件的情况下,我不能说这是完全正确的,但它是有效的.

请注意,如果您只想在应用程序模块中使用多个源文件,那么更简单,在main.swift中不需要导入声明或模块限定:

swift -o main hello.swift main.swift

如何将编译的.swiftmodule中声明的swift函数导入到另一个swift文件?的更多相关文章

  1. ios – Swift:如何从不同的swift文件中调用函数

    我的Xcode6beta-2项目中有多个类型为UIViewController的swift文件.我基本上想知道文件A中的一些数据在文件B中使用.我的文件都是UIViewControllers,我创建了一个没有参数的函数,它返回UIViewController_A中的字符串.当我尝试在UIViewController_B中调用所述函数时,intellisense为我填写,但是我必须有一个自动填充为U

  2. Swift 2

    letlabel="Thewidthis"letwidth=94letwidthLabel=label+String练习:删除最后一行中的String,错误提示是什么?你可以一起使用if和let来处理值缺失的情况。switch支持任意类型的数据以及各种比较操作——不仅仅是整数以及测试相等。运行switch中匹配到的子句之后,程序会退出switch语句,并不会继续向下运行,所以不需要在每个子句结尾写break。

  3. 【swift总结】swift语言总览

    变量声明常量的声明字符串声明变量类型转换swift语言中类型没有隐式转换,所有类型只能强制转换在字符串中打印值数组声明与使用字典的声明是使用控制语句for语句switch语句switch语句不需要加break语句,语句执行以后会自动跳出。号的变量声明函数返回一个参数返回多个参数可变参数的函数函数里面可以嵌套函数函数返回一个函数函数是swift里面的一级成员,最大,所以他也可以返回一个函数函数作为参数传递函数是特殊的闭包?

  4. OC代码转Swift代码

    初始化函数对于oc中的[[XXalloc]init]swift不需要alloc也不需要init。直接调用以类名为函数名的工厂方法进行初始化。声明的变量可以不显式声明类型除此之外一般的OC类也可以这样使用访问属性和OC一样,可以使用点(.)操作符访问成员变量调用函数和OC一样,可以使用点(.)操作符调用函数括号内填入参数苹果原文链接

  5. swift——基础数据类型

    Swift也提供了与C和Objective-C类似的基础数据类型,包括整形Int、浮点数Double和Float、布尔类型Bool以及字符串类型String。除了常见的数据类型之外,Swift还集成了Objective-C中所没有的“元组”类型,可以作为一个整体被传递。Swift还提供了可选类型,用来处理一些未知的不存在的值。可选类型是大部分Swift新特性的核心。可选性类型只是Swift作为类型安全的编程语言的一个例子。Swift可以帮助你更快地发现编码中的类型错误。像其他Swift类型一样,这些类型名

  6. Swift2.0初见笔记

    Swift2.01.简单值1.使用let来声明常量,常量无法改变;使用var来声明变量.2.常量或者变量的类型必须和你赋给它们的值一样。后面的东西都会被忽略,并且整个表达式返回nil。在switch里,枚举成员使用缩写.Hearts来引用,因为self的值已经知道是一个suit。SimpleClass的声明不需要标记任何方法因为类中的方法经常会修改类。

  7. Swift - 基础部分

    Swift允许使用max或min访问对应类型的最大值或最小值。Swift提供了一个特殊的整数类型Int,长度与当前平台的原生字长相同。Swift提供了两种有符号浮点数类型:Double表示64位浮点数。Swift允许将元组的元素拆分成单个的常量或变量,接下来即可正常使用这些常量或变量了。if语句以及强制解析Swift允许使用if语句和nil比较来判断一个可选值是否包含值。隐式解析可选类型主要被用在Swift中类的构造过程中。

  8. swift自学注意点

    ",半闭合范围运算符”....”。例如:在swift中,for循环的写法如下:foriin0…5{println}//输出0到5注意在for循环中,不用再重新定义i变量,直接写i即可,且不再需要括号,直接使用forin即可。

  9. 【面试必备】Swift面试题及其答案

    在这篇文章中,我和这个raywenderlich.com网站的教学团队共同写了一个Swift面试问题列表。你可以用这些问题来测试应聘者关于Swift方面的知识水平,或者测试一下你自己。每个方面有分成三个等级:初级:适合读了一到两本有关Swift的书,并且已经开始用Swift开发应用程序的初学者。笔试问题初学者问题1、有什么更好的方法来写下面的for循环?假如Tutorial是一个类,tutorial1.difficulty和tutorial2.difficulty的值将都会是2.在Swift中类对象都是引

  10. [精校版]The Swift Programming Language-欢迎使用Swift-Swift 初见

    简单值使用let来声明常量,使用var来声明变量。letlabel="Thewidthis"letwidth=94letwidthLabel=label+String练习:删除最后一行中的String,错误提示是什么?shoppingList[1]="bottleofwater"varoccupations=["Malcolm":"Captain","Kaylee":"Mechanic",]occupations["Jayne"]="PublicRelations"要创建一个空数组或者字典,使用初始化语法

随机推荐

  1. Swift UITextField,UITextView,UISegmentedControl,UISwitch

    下面我们通过一个demo来简单的实现下这些控件的功能.首先,我们拖将这几个控件拖到storyboard,并关联上相应的属性和动作.如图:关联上属性和动作后,看看实现的代码:

  2. swift UISlider,UIStepper

    我们用两个label来显示slider和stepper的值.再用张图片来显示改变stepper值的效果.首先,这三个控件需要全局变量声明如下然后,我们对所有的控件做个简单的布局:最后,当slider的值改变时,我们用一个label来显示值的变化,同样,用另一个label来显示stepper值的变化,并改变图片的大小:实现效果如下:

  3. preferredFontForTextStyle字体设置之更改

    即:

  4. Swift没有异常处理,遇到功能性错误怎么办?

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  5. 字典实战和UIKit初探

    ios中数组和字典的应用Applicationschedule类别子项类别名称优先级数据包contactsentertainment接触UIKit学习用Swift调用CocoaTouchimportUIKitletcolors=[]varbackView=UIView(frame:CGRectMake(0.0,0.0,320.0,CGFloat(colors.count*50)))backView

  6. swift语言IOS8开发战记21 Core Data2

    上一话中我们简单地介绍了一些coredata的基本知识,这一话我们通过编程来实现coredata的使用。还记得我们在coredata中定义的那个Model么,上面这段代码会加载这个Model。定义完方法之后,我们对coredata的准备都已经完成了。最后强调一点,coredata并不是数据库,它只是一个框架,协助我们进行数据库操作,它并不关心我们把数据存到哪里。

  7. swift语言IOS8开发战记22 Core Data3

    上一话我们定义了与coredata有关的变量和方法,做足了准备工作,这一话我们来试试能不能成功。首先打开上一话中生成的Info类,在其中引用头文件的地方添加一个@objc,不然后面会报错,我也不知道为什么。

  8. swift实战小程序1天气预报

    在有一定swift基础的情况下,让我们来做一些小程序练练手,今天来试试做一个简单地天气预报。然后在btnpressed方法中依旧增加loadWeather方法.在loadWeather方法中加上信息的显示语句:运行一下看看效果,如图:虽然显示出来了,但是我们的text是可编辑状态的,在storyboard中勾选Editable,再次运行:大功告成,而且现在每次单击按钮,就会重新请求天气情况,大家也来试试吧。

  9. 【iOS学习01】swift ? and !  的学习

    如果不初始化就会报错。

  10. swift语言IOS8开发战记23 Core Data4

    接着我们需要把我们的Rest类变成一个被coredata管理的类,点开Rest类,作如下修改:关键字@NSManaged的作用是与实体中对应的属性通信,BinaryData对应的类型是NSData,CoreData没有布尔属性,只能用0和1来区分。进行如下操作,输入类名:建立好之后因为我们之前写的代码有些地方并不适用于coredata,所以编译器会报错,现在来一一解决。

返回
顶部