Modulinos: Difference between revisions
Content added Content deleted
(add Swift) |
|||
Line 1,634: | Line 1,634: | ||
Transcript show: 'Test: The meaning of life is ', ((ScriptedMain meaningOfLife) printString); cr.</lang> |
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}}== |
=={{header|Tcl}}== |