问题标签 [identifier]
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.
compiler-construction - 在编译期间存储变量和常量。(示例语言)
背景:我正在制作一个编译器,扫描仪和解析器已经完成。我们有我们的形式语法,它将程序定义为:
所以你会注意到声明可以是全局的,也可以是主方法的局部。所以当我解析时,我需要一种存储这三件事的方法: 传入的标识符是:常量还是变量(我可以通过解析方法来判断我在使用的解析方法,parseConst() 还是 parseVar()),全局或本地,它的实际名称,它的价值(如果我还知道的话)。
我有点困惑如何存储所有这些。在我的数据结构类中,我们实际上只需要存储两件事,一个键和一个值。所以我会有类似的东西:
对于一项简单的任务,似乎太多的数据结构。我应该创建一个类、标识符,并拥有一个全局/本地布尔字段,以及一个常量/var 布尔值吗?然后将它们全部放在一个标识符哈希图中?
谢谢!
c++ - 使用字符串来识别对象:目的是什么?
例如 OGRE3D 使用字符串来识别对象,所以每次代码使用对象的名称(字符串)对对象进行操作时,它都必须进行字符串操作,并且由于 3D 引擎对速度非常敏感,它怎么可能是这样做的好方法吗?
当计算机必须对字符串进行操作时,它会按字节顺序执行操作,因此如果字符串较长,它会花费更多的 CPU 周期......
在代码中使用普通变量名而不是使用字符串标识符不是更快吗?
php - 在 PHP 中创建唯一用户指纹的方法
在 PHP 中生成用户唯一性“指纹”的最佳方法是什么?
例如:
- 我可以使用用户的 IP 地址作为“指纹”,但是,同一 IP 上可能有多个其他用户
- 我可以使用用户的 IP + 用户代理作为“指纹”,但是,单个用户可以简单地从 safari 切换到 firefox,并再次被视为独一无二
理想情况下,指纹标记为“机器”而不是浏览器或“IP”,但我想不出这是如何实现的。
对您如何唯一识别用户以及您的方法有哪些优点/缺点的想法/建议持开放态度。
javascript - 我可以在“窗口”以外的上下文中加载 javascript 文件吗?
我尝试加载一些外部 .js 文件,并且有一些无法解决的命名空间冲突。
我想以某种方式在它们自己的上下文中加载一些文件,将“ this
”从指向窗口对象替换为一些自定义命名空间。
例子:
第一个.js:
第二个.js:
在我看来,这种技巧可能非常有用。有可能吗?
编辑
似乎替换“ this
”并不能解决问题,因为它不是javascript中标识符解析的默认上下文。这是我的测试代码:
有任何想法吗?
解决方案
这是不可能的。我最终比今天早上更聪明,我放弃了。我向任何有类似问题的人推荐这些有启发性的阅读材料,可能想要破解它:http:
//jibbering.com/faq/notes/closures/
http://softwareas.com/cross-domain-communication-带 iframe
sql-server - SQL Server 数据库名称中的哪些字符有效?
我们将为我们的客户提供一个工具(除其他外)创建一个新的 SQL Server 数据库,我希望能够对他们提供的数据库名称进行基本验证。SQL Server 的文档解释了数据库名称中的有效字符。但是,文档显然不正确,因为我可以成功创建名称违反记录规则的数据库。
根据 SQL Server 的CREATE DATABASE文档,数据库名称必须符合标识符规则;标识符的规则取决于数据库的兼容性级别。当兼容级别为 100 时(根据 SQL Server Management Studio,它的意思是“SQL Server 2008”),名称必须以 Unicode 字母、、、_
或@
;#
开头 后跟一个或多个字母、数字、@
、$
、#
或_
. 该文档明确指出不允许嵌入空格或特殊字符。
这与现有证据背道而驰,因为我可以使用 SQL Server Management Studio 创建一个名称为的数据库This & That | "Other"
-- 它不仅包含嵌入的空格(明确禁止),而且还包含特殊字符 ( |
, "
)在文件名中有效。我检查了一下,数据库的兼容级别确实是“SQL Server 2008 (100)”,尽管它的名称在该兼容级别被记录为无效。
哎呀,我什至可以这样做CREATE DATABASE " "
(是的,那是一个空格),这证明了第一个字符不必是字母、下划线、at 符号或井号。
所以我想我的问题是,SQL Server 数据库名称中哪些字符是有效的?是否有任何与 SQL Server 的实际行为一致的记录规则?
vb.net - VB.NET 为什么这个子程序是这样声明的?
VB.NET 2010、.NET 4
我有一个基本问题:我有一个在网上某处发现的子程序,因此声明:
我想知道子名称后声明的(Of T As Control)部分。我看到后来在指定Control的类型和Action(Of T)中使用了T,但是为什么要这样做而不是这样做:
潜艇名称后面的那部分是什么意思?它的目的是什么?非常感谢,并为我的无知感到抱歉。
php - 上传文件 PHP 时生成唯一文件名的最佳方法
任何人都可以建议为文件上传生成唯一文件名以避免重复条目的最佳做法吗?
提前致谢。
hibernate - Hibernate 抛出 org.hibernate.AnnotationException:没有为实体指定标识符:com..domain.idea.MAE_MFEView
为什么我会收到此异常?
更新:我已将代码更改为如下所示:
但现在我得到了这个例外:
android - Android模拟器的设备标识符
我想在模拟器中测试一个依赖于设备标识符(ANDROID_ID)的应用程序。
我目前使用以下代码获取设备标识符:
当我在模拟器中运行它时,它会返回null
,这给了我各种各样的问题。似乎更高的 Android 版本会返回一些东西。
有没有办法在 Android 模拟器中获取设备标识符?我是否错误地获取了设备 ID?
也许可以通过控制台设置模拟器的设备标识符?
ios - 4.2 中 iAd 更改的问题
我正在尝试在我的应用程序中使用 iAds,但我想支持 4.0 以上的所有版本。但是设置当前大小标识符的代码在 4.2 sdk 中发生了变化,它曾经是:
但在 4.2 中,代码是:
因此,当我在 4.2 sdk 中使用旧代码时,它会崩溃,并且如果我为 4.2 使用正确的代码,则任何运行之前版本到 4.2 的设备都会崩溃。有谁知道我如何同时支持两者,或者我必须使用 4.2 作为部署目标吗?