对于那些在sml、ocaml、haskell等方面花了一段时间的人来说,当你回到使用C、Python、Java等的时候,你会开始注意到一些你从未意识到的缺失。我正在用Python做一些事情,我意识到我真正想要的是一个函数式的数据类型,比如
datatype phoneme = Vowel of string | Consonant of voice * place * manner
datatype voice = Voiced | Voiceless
datatype place = Labial | Dental | Retroflex | Palatal | Velar | Glottal
datatype manner = Stop | Affricate | Fricative | Nasal | Lateral
type syllable = phoneme list
有没有人喜欢用Python来模拟这个问题呢?在
对于像
voice
、place
和manner
这样的简单枚举,可以使用这样的类:您可以创建包含所需属性的类。在
如前所述,你的声音、地点和方式类型只是枚举类型。有许多方法可以实现这些功能,例如
那么你可以参考声音。声音以及声音。无声,等等。在
问题是音素之类的类型。在C语言中,实现这种功能的通常方法是按住鼻子并使用union。在python中,使用多态性。首先,弄清楚要对音素类型执行什么操作。然后,将这些操作作为元音类和辅音类的成员函数来实现。在C++中,你会让这些成员函数虚拟化,并为元音和辅音建立抽象基类;在Python中,由于鸭子打字,你可以不用这样做,尽管你可能仍然会找到一个有用的基类。在
所以
^{pr2}$相关问题 更多 >
编程相关推荐