Modulinos: Difference between revisions

add Swift
(add Swift)
Line 1,634:
Transcript show: 'Test: The meaning of life is ', ((ScriptedMain meaningOfLife) printString); cr.</lang>
 
 
=={{header|Swift}}==
 
Swift requires a number of hacks and boilerplate, but it is possible to write a modulino nevertheless.
 
Example
 
<lang shell>$ make
mkdir -p bin/
swiftc -D SCRIPTEDMAIN -o bin/ScriptedMain ScriptedMain.swift
swiftc -emit-library -module-name ScriptedMain -emit-module ScriptedMain.swift
mkdir -p bin/
swiftc -D TEST -o bin/Test Test.swift -I "." -L "." -lScriptedMain -module-link-name ScriptedMain
bin/ScriptedMain
Main: The meaning of life is 42
bin/Test
Test: The meaning of life is 42</lang>
 
Makefile
 
<lang make>all: bin/ScriptedMain bin/Test
bin/ScriptedMain
bin/Test
 
bin/ScriptedMain: ScriptedMain.swift
mkdir -p bin/
swiftc -D SCRIPTEDMAIN -o bin/ScriptedMain ScriptedMain.swift
 
ScriptedMain.swiftmodule: ScriptedMain.swift
swiftc -emit-library -module-name ScriptedMain -emit-module ScriptedMain.swift
 
bin/Test: Test.swift ScriptedMain.swiftmodule
mkdir -p bin/
swiftc -D TEST -o bin/Test Test.swift -I "." -L "." -lScriptedMain -module-link-name ScriptedMain
 
clean:
-rm -rf bin/
-rm *.swiftmodule
-rm *.swiftdoc
-rm *.dylib
</lang>
 
ScriptedMain.swift
 
<lang swift>import Foundation
 
public class ScriptedMain {
public var meaningOfLife = 42
 
public init() {}
 
public class func main() {
var meaning = ScriptedMain().meaningOfLife
 
println("Main: The meaning of life is \(meaning)")
}
}
 
#if SCRIPTEDMAIN
@objc class ScriptedMainAutoload {
@objc class func load() {
ScriptedMain.main()
}
}
#endif
</lang>
 
Test.swift
 
<lang swift>import Foundation
import ScriptedMain
 
public class Test {
public class func main() {
var meaning = ScriptedMain().meaningOfLife
 
println("Test: The meaning of life is \(meaning)")
}
}
 
#if TEST
@objc class TestAutoload {
@objc class func load() {
Test.main()
}
}
#endif
</lang>
 
=={{header|Tcl}}==
Anonymous user