这与宣传的一样:
# example 1
#!/bin/bash
grep -ir 'hello world' .
Run Code Online (Sandbox Code Playgroud)
这不是:
# example 2
#!/bin/bash
argumentString="-ir 'hello world'"
grep $argumentString .
Run Code Online (Sandbox Code Playgroud)
尽管'hello world'在第二个例子中被引号括起来,但grep解释'hello为一个参数和world'另一个参数,这意味着,在这种情况下,'hello将是搜索模式world'并将成为搜索路径.
同样,这仅在从argumentString变量扩展参数时发生.grep 'hello world'在第一个示例中正确解释为单个参数.
谁能解释为什么会这样?有没有一种正确的方法来扩展一个字符串变量,它将保留每个字符的语法,以便shell命令正确解释它?
当然,我知道所有类型做有一个共同的祖先,但我的意思是这样的:
在动态类型语言中,通常的做法是使用"混合"返回类型.常见的情况是尝试从数据库检索数据,然后返回对象(使用找到的数据初始化)或FALSE(如果没有找到数据)的函数.
一个小伪代码来演示这样的反模式:
function getObjectFromDatabase(object_id) {
if(result = db_fetch_object("SELECT * FROM objects WHERE id = %d", object_id) {
return result
} else {
return FALSE
}
}
Run Code Online (Sandbox Code Playgroud)
如果找到我的对象id的数据,我将DB记录作为对象返回.如果没有,我得到一个布尔值.然后,当然,我,客户端,处理多种可能的返回类型.
在Scala中实现此目的的唯一方法是为所有可能的返回类型找到一个共同的祖先,并将其声明为签名中的返回类型?
// Like so:
def getObjectFromDatabase(objectId: Int): Any = {
val result = dbFetchObject("SELECT * FROM objects WHERE id = %d", object_id)
if(result) {
return result
} else {
return false
}
}
Run Code Online (Sandbox Code Playgroud)
或者是否可以注释多种可能的返回类型?
(请注意,我不希望有可能这样做,因为我希望强制执行函数返回类型尽可能明确.对我来说,学习语言禁止模糊返回类型会让我感到宽慰,这就是我要问的原因.)
我是Play的新手!Web框架,为了理解它是如何工作的,以及它与其他Web框架的比较,我希望能够在Play中进行跟踪!源代码,从开始到结束的请求生命周期.我将使用Play的Scala实现!
因为我的大部分经验都是使用PHP框架,所以我习惯于从web根目录中的index.php文件开始,然后通过任何包含的config/bootstrapping脚本,依赖注入处理,请求路由,动作调度,最后读取视图/响应呈现.
我无法确定Scala/Play的类似入口点!申请,我非常感谢推动正确的方向.请求生命周期的演练当然会非常慷慨,但我真正需要的只是显示入口点.
为了寻找一个看似简单的问题的答案,在Drupal社区页面上搜索的时间到目前为止没有结果,所以希望你能帮忙!
任何人都可以用自定义形式用FAPI来描述如何实现'nodereference_autocomplete'类型的输入元素?对于初学者来说,这是一个AJAX装饰的文本字段,它在CCK模块提供的匹配引用节点的字段上自动完成.我想在我自己的Drupal 6模块中利用这个功能.
提交的值必须是引用节点的nid.此外,最受欢迎的是关于将自动完成路径限制为仅包括"文章"和"博客"类型的节点的说明.
感谢您对这个最基本的问题的帮助!
scala ×2
bash ×1
drupal ×1
drupal-6 ×1
drupal-fapi ×1
drupal-forms ×1
expansion ×1
quoting ×1
syntax ×1
variables ×1