Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Value Declarations

Keyword(s)ContextDescriptionExample
-source, workbench, functionlocal valuea=1
-initproperty (if in building plan), else local valuea=1
propworkbenchmodel propertyprop a=1
constmoduleprivate module valueconst a=1;
pub, (pub const)modulepublic module valuepub a=1;, pub const a=1;
usemodule, source, workbench, function, initprivate usageuse std::geo3d;
pub usemodule, sourcepublic usagepub use std::geo3d;
fnmodule, source, workbenchprivate functionfn() {}
pub fnmodule, sourcepublic functionpub fn() {}

test

use std::debug::*;

mod module {
    
    use std::debug::*;

    // private module variable
    const value = 1;
    // public module variable
    pub pub_value = 2;

    pub mod pub_sub_module {
        // pre-init code
        use std::debug::*;

        // private module variable
        const value = 3;
        // public module variable
        pub pub_value = 4;

        // private workbench
        sketch PrivateWorkbench() {}

        // public workbench
        pub sketch Workbench(param = 5) {
            const sketch_local = 6;

            init(alt_param = 7) {
                init_local = 8;

                assert_eq([super::value, 1]);
                assert_eq([super::pub_value, 2]);
                assert_eq([value, 3]);
                assert_eq([pub_value, 4]);
                assert_invalid(param);
                assert_eq([sketch_local, 6]);
                assert_eq([alt_param, 7]);
                assert_eq([init_local, 8]);

                prop param = 5; // needed to compile
            }

            // property of sketch
            prop property = 9;

            // post init code
            assert_eq([super::value,1]);
            assert_eq([super::pub_value, 2]);
            assert_eq([value, 3]);
            assert_eq([pub_value, 4]);
            assert_eq([param, 5]);
            assert_eq([sketch_local, 6]);
            assert_invalid(alt_param);
            assert_invalid(init_local);
            assert_eq([property, 9]);

            function();
        }

        fn function(fn_param = 10) {
            assert_eq([super::value, 1]);
            assert_eq([super::pub_value, 2]);
            assert_eq([value, 3]);
            assert_eq([pub_value, 4]);
            assert_invalid(param);
            // assert_invalid(Workbench);
            assert_eq([fn_param, 10]);

            return 0;
        }
    }

    pub fn function(fn_param = 11) {
        assert_eq([value, 1]);
        assert_eq([pub_value, 2]);
        assert_invalid(pub_sub_module::value);
        assert_eq([pub_sub_module::pub_value, 4]);
        assert_invalid(Workbench);
        assert_invalid(PrivateWorkbench);
        assert_eq([fn_param, 11]);
        
        return 0;
    }
}

// source file code 
assert_invalid(module::value);
assert_eq([module::pub_value, 2]);
assert_invalid(module::pub_sub_module::value);
assert_eq([module::pub_sub_module::pub_value, 4]);
assert_eq([module::pub_sub_module::Workbench().property, 9]);
assert_invalid(module::pub_sub_module::PrivateWorkbench);
assert_eq([module::function(), 0]);