我正在学习Ruby并在一些文档中找到了这个代码示例:
require 'find'
total_size = 0
Find.find(ENV["HOME"]) do |path|
if FileTest.directory?(path)
if File.basename(path)[0] == ?.
Find.prune # Don't look any further into this directory.
else
next
end
else
total_size += FileTest.size(path)
end
end
Run Code Online (Sandbox Code Playgroud)
目的是总结树中所有文件的文件大小,不包括以点开头的目录.该行if File.basename(path)[0] == ?.显然正在执行目录名称测试.我会这样写的:
if File.basename(path)[0] == "."
Run Code Online (Sandbox Code Playgroud)
怎么?.办?(我想可能是一个错字.)我没有看到其他地方描述的这种语法.
Jer*_*ten 11
?.返回点的ASCII值.你可以把几乎任何字符的问号后能得到它的ASCII值,如?a或?3或?\\等他们不是比较字符串的原因"."是,当你索引到一个字符串,你得到的字符的ASCII值在那个索引而不是char本身.要获取特定索引处的char,您可以将其[0, 1]用作索引.所以选项是:
if File.basename(path)[0] == ?.
Run Code Online (Sandbox Code Playgroud)
要么:
if File.basename(path)[0, 1] == "."
Run Code Online (Sandbox Code Playgroud)
甚至:
if File.basename(path)[0].chr == "."
Run Code Online (Sandbox Code Playgroud)