我想利用SML程序中的def load_new_category(self, filename):
basepath = os.path.dirname(__file__)
filepath = os.path.abspath(os.path.join(basepath, "..", "JSON", filename))
with open(filepath) as sample:
self.create_new_category(is_active=case['is_active'],
description=case['description'], page_title=case['page_title'],
meta_keywords=case['meta_keywords'], meta_description=case['meta_description'],
navigation_menu=case['navigation_menu'],
parent_filter_setting=case['parent_filter_setting'],
show_filter=case['show_filter'], sort_filter=case['sort_filter'])
函数进行各种调试,以便在函数内部和执行期间打印print
类型数据,例如:在integer list
区块内。但是,正如我所见,let
只能打印字符串类型数据。我不能等待结果返回打印我想要的东西,因为我在执行期间创建了分支的函数并创建了许多不同的列表,我想看看每个分支末尾的结果列表是什么。
因此,有没有办法在函数内打印列表,因为我会打印一个字符串?
答案 0 :(得分:2)
如果是int list
,你可以这样做:
fun printIntList ints = app (fn i => print(Int.toString i ^" ")) ints;
然后printIntList [1,2,3]
将打印1 2 3
你可以为其他类型做类似的事情。
On edit:这是你用直接SML做的最好的。 SML / NJ有自己的extensions,包括“访问编译器内部”和“用户可自定义的漂亮打印”,听起来很有希望 - 尽管我对标准库的扩展经验不足。
答案 1 :(得分:2)
将整数列表转换为字符串的简单功能:
fun intlistToString [] = ""
| intlistToString [x] = Int.toString x
| intlistToString (x::xs) = Int.toString x ^ ", " ^ intlistToString xs
然后您可以使用print (intlistToString myList)
代替print myList
。它不会打印列表周围的方括号,而不是没有更多的代码,但我会把它留作练习因为我很懒。