Bug #15488
closedconst_defined?("File::NULL") ใฎๆๅ
Description
const_get
ใจ const_defined?
ใซใคใใฆใไพใใฐ Math::PI
ใงใฏไปฅไธใฎใใใซใชใ
ใฉใกใใๆๅพ
้ใใฎ็ตๆใซใชใใพใใ
p Object.const_get("Math::PI") #=> 3.141592653589793
p Object.const_defined?("Math::PI") #=> true
ไธๆนใFile::NULL
ใฎๅ ดๅใฏไปฅไธใฎใใใซ const_get
ใงๅคใๅๅพใงใใใฎใซ
const_defined?
ใ false
ใซใชใใพใใ
p Object.const_get("File::NULL") #=> "/dev/null"
p Object.const_defined?("File::NULL") #=> false
ใใใฏๆๅณ็ใงใใใใใ
Updated by osyo (manga osyo) over 6 years ago
File.const_defined?
ใ ใจ true
ใซใชใใใใงใใญใ
p Object.const_get("File::NULL") #=> "/dev/null"
p Object.const_defined?("File::NULL") #=> false
p File.const_get("NULL") #=> "/dev/null"
p File.const_defined?("NULL") #=> true
Updated by osyo (manga osyo) over 6 years ago
ใกใใฃใจ่ชฟในใฆใฟใใใงใใใๆฌกใฎใใใซ include
ใใใขใธใฅใผใซใฎๅฎๆฐใฎๅ ดๅใฏ false
ใ่ฟใฃใฆใใใฎใๅๅ ใชใใใงใใญใ
module M
HOGE = 42
end
class X
include M
end
p Object.const_get("X::HOGE") # => 42
p Object.const_defined?("X::HOGE") # => false
File::NULL
ใๅฎ้ใซใฏ File::Constants::NULL
ใงๅฎ็พฉใใใฆใใใFile::Constants
ใ include
ใใฆใใใใใงใใ
see: https://docs.ruby-lang.org/ja/latest/class/File=3a=3aConstants.html
p Object.const_defined?("File::NULL") # => false
p Object.const_defined?("File::Constants::NULL") # => true
Updated by shuujii (Shuji KOBAYASHI) over 6 years ago
ใชใใปใฉใผใใใใใ้ใใใใใใงใใญใ
ใใใใใจใFile.const_defined?("NULL")
ใฏ true
ใซใชใใใจใจใ
Object.const_get("File::NULL")
ใจใฎไธ่ฒซๆงใฎ่ฆณ็นใใ
Object.const_defined?("File::NULL")
ใ true
ใซใชใใปใใ่ฏใใใใชๆฐใใใพใใ
Updated by osyo (manga osyo) over 6 years ago
ๆๅใไฟฎๆญฃใใใใใใๆธใใฆใฟใพใใใ
ใใ ใๆๅณ็ใซใใฎใใใชๅฎ่ฃ
ใซใใฆใใ็ฏใใใใฎใงใใใไปๆงใชใฎใใใฐใชใฎใใฏ็พๆ็นใงๅคๆญใใใฎใฏใกใใฃใจใใใใใใใงใใญใ
่ฉฒๅฝ็ฎๆใๆถใใฆใใในใใฏใในใใฆใใใใงใใโฆใ
ใใใใๅฆ็ใซไธ่ฒซๆงใๆใใใใใใซใฏ true
ใ่ฟใใใปใใใใใจๆใใพใใ
- pull requst : https://github.com/ruby/ruby/pull/2061
ใพใใๅ ใ ใฏไปฅไธใฎ issues ใง่ญฐ่ซใใใฆใใใใใงใใ
- Feature #7414: Now that const_get supports
Foo::Bar
; syntax, so should const_defined?. - Ruby trunk - Ruby Issue Tracking System
ๆๅยถ
ไฟฎๆญฃๅยถ
module M
HOGE = 42
end
class X
include M
end
# OK: ๅ้กใชใๅๅพใงใใ
p X.const_get("HOGE") # => 42
p Object.const_get("X::HOGE") # => 42
# OK: ๆๅพ
ใใๅคใ่ฟใฃใฆใใ
p X.const_defined?("HOGE") # => true
# NG: const_get ใงๅคใฏๅๅพใงใใใ false ใ่ฟใฃใฆใใ
p Object.const_defined?("X::HOGE") # => false
ไฟฎๆญฃๅพยถ
module M
HOGE = 42
end
class X
include M
end
# OK: ๅ้กใชใๅๅพใงใใ
p X.const_get("HOGE") # => 42
p Object.const_get("X::HOGE") # => 42
# OK: ๆๅพ
ใใๅคใ่ฟใฃใฆใใ
p X.const_defined?("HOGE") # => true
# OK: true ใ่ฟใฃใฆใใ
p Object.const_defined?("X::HOGE") # => true
# OK: ็ฌฌไบๅผๆฐใซ false ใๆธกใใจ mixin ใ่ๆ
ฎใใใชใใใใซใชใใฎใง false ใซใชใ
p Object.const_defined?("X::HOGE", false) # => false
ใฆใผในใฑใผในยถ
ๅฎๆฐใๅญๅจใใชใๅ ดๅใซๅ็ใซ mixin ใ่กใใใๅ ดๅใฏ include
ใ่ๆ
ฎใใใฆใใฆใปใใใ
module Valuable
VALUE = 42
end
class X
end
def get
# ้
ๅปถใใฆ mixin ใใ
if !Object.const_defined?("X::VALUE")
pp "homu"
X.include Valuable
end
Object.const_get("X::VALUE")
end
# ๆๅใฎใกใฝใใๅผใณๅบใใงใฎใฟ mixin ใใใ
p get
p get
p get
Updated by nobu (Nobuyoshi Nakada) over 6 years ago
- Status changed from Open to Closed
- Backport changed from 2.4: UNKNOWN, 2.5: UNKNOWN, 2.6: UNKNOWN to 2.4: REQUIRED, 2.5: REQUIRED, 2.6: REQUIRED
Updated by naruse (Yui NARUSE) over 6 years ago
- Backport changed from 2.4: REQUIRED, 2.5: REQUIRED, 2.6: REQUIRED to 2.4: REQUIRED, 2.5: REQUIRED, 2.6: DONE
ruby_2_6 r66939 merged revision(s) 66938.
Updated by nagachika (Tomoyuki Chikanaga) over 6 years ago
I have a little concern that this could be an imconpatibility issue. I will skip this change for the next teeny.