Max*_*rin 48
你可以尝试做这样的事情
example.sh
#!/bin/bash
# include class header
. obj.h
. system.h
# create class object
obj myobject
# use object method
myobject.sayHello
# use object property
myobject.fileName = "file1"
system.stdout.printString "value is"
system.stdout.printValue myobject.fileName
Run Code Online (Sandbox Code Playgroud)
obj.h
obj(){
. <(sed "s/obj/$1/g" obj.class)
}
Run Code Online (Sandbox Code Playgroud)
obj.class
# Class named "obj" for bash Object
# property
obj_properties=()
# properties IDs
fileName=0
fileSize=1
obj.sayHello(){
echo Hello
}
obj.property(){
if [ "$2" == "=" ]
then
obj_properties[$1]=$3
else
echo ${obj_properties[$1]}
fi
}
obj.fileName(){
if [ "$1" == "=" ]
then
obj.property fileName = $2
else
obj.property fileName
fi
}
Run Code Online (Sandbox Code Playgroud)
system.h中
. system.class
Run Code Online (Sandbox Code Playgroud)
system.class
system.stdout.printValue(){
echo $($@)
}
system.stdout.printString(){
echo $@
}
Run Code Online (Sandbox Code Playgroud)
链接供参考:https://github.com/mnorin/bash-scripts/tree/master/objects 关键是你不能创建对象,但你可以在bash中模拟面向对象的编程
Tac*_*0sS 10
所以我记得几年前检查了这个问题并回答了......并且在想......什么!?!?!
然后上周我仔细查看了@Maxims 的答案,然后就清楚了..
我花了上周的时间为类对象创建了一个 bash 类转译器和类加载器,以及方法和其他好东西..这一切都是因为我想创建一个终端动画基础设施:
所以虽然这只是一个开始,但我发现这是一个超级酷和具有挑战性的冒险......我希望我的代码也能帮助其他人!
顺便说一句:仅在 MAC OS 上进行了测试,因此可能需要进行一些调整:)
归档时间: |
|
查看次数: |
18355 次 |
最近记录: |