添加到解析方言内部的地图
Add to map inside of parse dialect
我想创建一个 map
,其中哈希与 url 相关联,以便检查某些 url 是否在 map
中。
如果它还不在 map
中,请将它(和 url)添加到它。
parseContainer: func [cstr [string!]] [
parse cstr [
thru "<a href=" to {"}
thru "http://" copy quarto_url to {"}
(
quarto_hash: checksum/method to-binary quarto_url 'md5
old: find words-of checksums 'quarto_hash
if not old [append checksums [quarto_hash quarto_url ]]
)
]
]
但是单词 quarto_hash
和 quarto_url
没有转换成它们的值。
这可能不是解决问题的最简单方法,所以我会等待您的输入。
另一个问题:map
是否可以快速解决数千个元素的元素插入和搜索问题,或者是否有其他更合适的类型?
仅供参考,我使用的是 Rebol3
,但也包含了 Red
标签,因为我在不久的将来也会使用 Red
。
最好的方法是什么?
你需要减少quarto_hash和quarto_url
这两个词
if not old [append checksums reduce [quarto_hash quarto_url ]]
也不需要提取图的话,直接在图上用select应该会更快
我会用
if not select checksums quarto_hash [
append checksums reduce [quarto_hash quarto_url ]
]
您需要执行以下操作之一:
if not old [repend checksums [quarto_hash quarto_url]]
或
if not old [append checksums reduce [quarto_hash quarto_url]]
您现在会发现 quarto_hash
和 quarto_url
在添加到 checksums
(散列)映射之前被评估。
关于 map
insertion/searching 你会在下面找到例子 easier/faster:
>> checksums: map []
== make map! [
]
>> quarto-url: "www.draegtun.com"
== "www.draegtun.com"
>> quarto-hash: checksum/method to-binary quarto-url 'md5
== #{D9F71DD455C3E84E7C5C8F2C23FDF174}
>> checksums/:quarto-hash
== none
>> ;; returns NONE if key not present in map
>> checksums/:quarto-hash: quarto-url
== "www.draegtun.com"
>> checksums
== make map! [
#{D9F71DD455C3E84E7C5C8F2C23FDF174} "www.draegtun.com"
]
我想创建一个 map
,其中哈希与 url 相关联,以便检查某些 url 是否在 map
中。
如果它还不在 map
中,请将它(和 url)添加到它。
parseContainer: func [cstr [string!]] [
parse cstr [
thru "<a href=" to {"}
thru "http://" copy quarto_url to {"}
(
quarto_hash: checksum/method to-binary quarto_url 'md5
old: find words-of checksums 'quarto_hash
if not old [append checksums [quarto_hash quarto_url ]]
)
]
]
但是单词 quarto_hash
和 quarto_url
没有转换成它们的值。
这可能不是解决问题的最简单方法,所以我会等待您的输入。
另一个问题:map
是否可以快速解决数千个元素的元素插入和搜索问题,或者是否有其他更合适的类型?
仅供参考,我使用的是 Rebol3
,但也包含了 Red
标签,因为我在不久的将来也会使用 Red
。
最好的方法是什么?
你需要减少quarto_hash和quarto_url
这两个词if not old [append checksums reduce [quarto_hash quarto_url ]]
也不需要提取图的话,直接在图上用select应该会更快
我会用
if not select checksums quarto_hash [
append checksums reduce [quarto_hash quarto_url ]
]
您需要执行以下操作之一:
if not old [repend checksums [quarto_hash quarto_url]]
或
if not old [append checksums reduce [quarto_hash quarto_url]]
您现在会发现 quarto_hash
和 quarto_url
在添加到 checksums
(散列)映射之前被评估。
关于 map
insertion/searching 你会在下面找到例子 easier/faster:
>> checksums: map []
== make map! [
]
>> quarto-url: "www.draegtun.com"
== "www.draegtun.com"
>> quarto-hash: checksum/method to-binary quarto-url 'md5
== #{D9F71DD455C3E84E7C5C8F2C23FDF174}
>> checksums/:quarto-hash
== none
>> ;; returns NONE if key not present in map
>> checksums/:quarto-hash: quarto-url
== "www.draegtun.com"
>> checksums
== make map! [
#{D9F71DD455C3E84E7C5C8F2C23FDF174} "www.draegtun.com"
]