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}}==