我想知道如何以编程方式提前查看 private void initUIComponents(LayoutInflater inflater, @Nullable ViewGroup container) {
mRootView = inflater.inflate(R.layout.fragment_home, container, false);
mToolbarHome = mRootView.findViewById(R.id.toolbar_home);
mBtnPause = mRootView.findViewById(R.id.btn_pause);
if (mToolbarHome != null) {
((AppCompatActivity) getActivity()).setSupportActionBar(mToolbarHome);
}
mBtnPause.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
pauseWiFi(mToolbarHome, mBtnPause);
}
});
}
模块上的每个常量。下面看到的行为是由于Digest
使用了here:
const_missing
鉴于它们是可能的摘要中的元编程,我如何知道所有可能的摘要?
对于知识,Ruby 2.4.1中似乎可用的知识应为require 'digest'
Digest.constants
#=> [:Class, :REQUIRE_MUTEX, :Instance, :Base]
Digest::MD5
Digest.constants
#=> [:Class, :REQUIRE_MUTEX, :Instance, :Base, :MD5]
Digest::SHA1
Digest.constants
#=> [:Class, :REQUIRE_MUTEX, :Instance, :Base, :MD5, :SHA1]
答案 0 :(得分:0)
这是从当前master branch of ruby剪下的代码:
module Digest
def self.const_missing(name) # :nodoc:
case name
when :SHA256, :SHA384, :SHA512
lib = 'digest/sha2.so'
else
lib = File.join('digest', name.to_s.downcase)
end
begin
require lib
rescue LoadError
raise LoadError, "library not found for class Digest::#{name} -- #{lib}", caller(1)
end
unless Digest.const_defined?(name)
raise NameError, "uninitialized constant Digest::#{name}", caller(1)
end
Digest.const_get(name)
end
# ...
end
...所以,你不能在不知道它们的情况下列出所有常量!您需要require
必要的文件,或直接引用常量(这将动态加载文件,如上所示)。
我能提供的任何解决方案只能保证适用于特定版本的ruby。不幸的是,您最好只是read the documentation并明确加载每个库!