问题标签 [dot-operator]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 将目录路径转换为 javascript 对象
我有一个 PHP 中的目录路径/文件列表,如下所示:
我想将这些转换为 javascript 对象。我想只是将“/”转换为句点,然后说类似的话:
我唯一的问题是文件名或目录是否以数字开头,即我不能说:files.001.foo = "bar";
我相信我需要重载点运算符来处理以数字开头的名称。这是最好的方法,还是有其他方法?
我实际上是在尝试将表单的 php 字符串解析"x1x2...xn/y1y2...yn/..."
为嵌套的 javascript 对象,其中 x_i、y_i、z_i 等是“/”以外的字符x1x2x3...xn.y1y2...yn.z1z2z3...zn = {};
。我想我在这里找到了一些解决方案,因为该用户还尝试基于分隔字符串(在他的情况下为“_”)动态添加 javascript 对象。
perl - 的行为。和 , Perl 中用于连接和解析的运算符
我试图在 Perl 中使用.
and,
运算符并得到一些奇怪的东西,我无法弄清楚:
如果我运行这个:
输出是:
我能理解的是,它将点运算符之前和之后的文本都视为字符串并将它们连接起来。
但是逗号呢?为什么它被省略而不是连接?
c++ - 使用指针成员变量将数据输入到结构中
我正忙着弄清楚接下来要做什么。基本上,这个程序只能使用指针变量(*)和动态分配的内存(例如,“int *variable = new int”)。我必须在其他一切之上创建一个结构!
我在下面包含了一些代码。我所有的 cin ">>" 运算符下面都有红线,并显示一条消息,“错误:没有运算符 ">>" 与这些操作数匹配”。在代码的“one.score2”部分(最后一行)中,我的“one”下方还有一条红线,并显示一条消息,“错误:表达式必须具有整数或非范围枚举类型”。
我怎样才能让我的代码工作?
android - 带点运算符的断言方法
这是教科书上的一个问题,没有答案,所以它必须在这里问。
“简单”版本是:
如果我必须将点运算符用于“完整”版本,会是这样吗?
希望你能明白我的意思:)
haskell - Haskell 函数组合 - 错误推断的类型
在下面的 Haskell 代码中,函数 typeError 不进行类型检查。
如果未注释 GHC 会产生此错误:
我不明白为什么。a
应该能够统一[a0]
- 它们是独立的类型变量。这正是它推断的类型 for typeCheck
- 但不是在使用.
运算符时。
Hugs 产生了一个非常相似且同样虚假的错误消息:
此外,这很好用:
该问题仅发生在 [[a]] 或 [[[a]]] 或更大的情况下。这是怎么回事?
c++ - .(dot) 运算符在 Objective-C 中究竟做了什么
我自学了 C 和 C++,现在正在尝试学习 Objective-C,但我对类实例中使用的点运算符有点困惑。假设我声明了一个类:
显然,这在 Objective-C 中有效,但在 C++ 或 C(在结构的情况下)中,这不会。您必须使用运算符 ->。因此,我正在寻找 .(dot) 运算符在 Objective-C 中的作用以及 ObjC 和 C 的两种不同含义如何不会导致 C 和 Objective-C 之间的兼容性问题的解释,即使 Objective-C 是C 的严格超集。
php - 如何将点视为点而不是php中的点运算符
有没有办法在 php.i 中做到这一点。我知道 php Treat 。作为连接运算符,但我想强制 php 在放置在字符串之间时将其视为点
像这样
它显示一个结果
wwwexamplecom
相反,我想要这样
www.example.com
如果我的问题听起来太难听的话,我还是个初学者。
c++ - 用于访问基础子对象的点或箭头运算符与范围解析运算符
C++
给定一个基类Base
和一个派生类Derived
,由 的构造函数构造的第一件事Derived
就是Base
子对象。由于它被称为子对象,我假设它可以像任何其他成员对象一样通过在Derived
对象上使用点运算符从客户端代码访问。我还假设它可以Derived
通过this->Base
. 完全由已初始化的对象名称后跟分号组成的语句应该可以编译,但也没有效果。按照这个逻辑,给定一个Derived
object myderived
,我尝试了:myderived.Base;
在客户端代码和this->Base;
inDerived
的实现中,并且两个语句都没有编译。
为什么?我知道Base
,它本身是Base
类的名称,而不是Base
对象的名称。但我认为(客户端代码)或(实现代码)前缀Base
限定是指基本子对象,因为没有任何前缀限定,是在构造函数初始化程序中引用子对象的方式。请参阅下面的代码,该代码(除了注释掉的代码)适用于 VC12 和 g++ 4.8。extends and的定义声明了一个数据成员,所以我的对象应该包含两个myderived.
this->
Base
Base
Derived
Derived
Base
Derived
Base
membase
Derived
Base
对象。假设成功编译不是任何编译器标准不一致的结果,控制台输出(在注释中)显示两个不同对象的int
成员的不同值,这意味着 in的 ctor 初始化程序是指继承的子对象,而引用声明的数据成员对象。In的 ctor 初始化器,专门指继承的子对象,而不仅仅是任何对象或类。n
Base
Derived
Base
Base
membase
Derived
Base
Base
Base
同样,不应该
myderived.Base;
或this->Base;
唯一地引用继承的Base
子对象并编译?Base
inmyderived.Base
或this->Base
引用Base
子对象或Base
类或任何东西?一般来说,继承的基础子对象是否被视为派生类的数据成员?
从 的角度来看
Derived
,是否只引用了构造函数初始化器Base
上下文中的继承子对象,而只引用了 ctor 初始化器之外的类?Derived
Base
Derived
如何
Base
通过对象访问继承的子对象,如在的实现代码和客户端代码Derived
中如何表达“对象的继承Base
子Derived
对象” ?Derived
范围解析运算符 in 的使用
myderived.Base::foo()
,其中foo()
的方法是Base
,编译。这是否意味着Base
是 的数据成员myderived
,因为它由myderived
点运算符限定?如果是这样,那是Base
类Base
还是Base
子对象?但
myderived.Base.foo()
不编译。对象成员的 AFAIK 访问在客户端代码中由对象名称和点运算符限定。由范围解析运算符而不是对象名称和点运算符限定的两种事物是(a)对属于命名空间的任何事物的外部访问和(b)静态数据成员的名称和成员函数的名称在其类定义之外定义的定义,在这种情况下Base
,在 之前的::
指的是Base
类,而不是任何Base
实例。这是否意味着Base
inmyderived.Base
是命名空间或引用类?如果是这样,那么它是命名空间还是引用该类取决于它是否附加了一个
::
后跟的成员Base
?如果#7 的答案是肯定的,那为什么?这似乎与以下逻辑不协调:命名空间对一个变量的封闭本身并不使命名空间能够封闭或构造该变量类型的其他实例。命名空间只拥有该类型的一个实例——它包含的变量。作为类的一部分的成员也是如此,例如静态数据成员。该类只拥有该类型的一个实例——它包含的静态数据成员。相反,一个类的同名非静态数据成员与该类的实例一样多。
给定方法
h()
和对象,在 VC12 和 g++ 4.8 中编译。此外,g++ 4.8 可以在该语句中采用任意数量的额外s,例如. 这样的说法似乎暗示是. 但 VC12 给. 但是给定object ,VC12 编译得很好,这也意味着 VC12 可以将一个类视为其自身的成员。但这与其无法编译先前的声明相矛盾。此外,VC12 无法编译具有任意数量额外内容的任何版本Base
Derived
myderived
myderived.Base::h();
Base::
myderived.Base::Base::h();
Base
Base
error C3083: '{ctor}': the symbol to the left of a '::' must be a type
Base
mybase
mybase.Base::h();
mybase.Base::h();
Base::
s(例如mybase.Base::Base::h()
)的任何版本,但 g++ 可以。哪个编译器是正确的,如果有的话?无论如何,这是否意味着命名空间或类可以包含自身?给定一个全局
int
变量x
,该语句::::x;
(带有两个范围解析运算符)不会在任一编译器中编译,所以我假设全局范围不包含全局范围。
java - Java 是否隐式使用带有 new 运算符的构造函数(或对象)?
今天我了解到您可以将new
运算符与分隔符(.
或“点运算符”)一起使用。这让我想知道 Java 是否隐式地对所有出现的 new 运算符使用相同的技术。
以下语句创建一个新的“InnerClass 对象”。它使用新的 ParentClass 对象执行此操作,使用.new
. 但是,new
此语句中的第一个运算符前面没有构造函数(或对象)。那么,Java 会在编译时添加一个吗?我尝试Main()
在此语句中显式添加一个 ( ),但代码无法编译。
pointers - 为什么我不能将 -> 运算符用于 main 中的结构指针?
我认为一般的经验法则是 -> 运算符用于访问结构指针的成员,而 . 运算符用于访问实际结构的成员。在我的代码中,我以为我创建了一个结构指针,但最终我仍然不得不使用 . 操作员。有人可以解释为什么吗?