我刚刚开始使用play框架,我正在尝试理解java应用程序代码和基于scala的模板框架之间的交互(注意:到目前为止我对Scala一无所知,除了它是另一个编译为JVM上的字节码的语言,以及您的Scala和Java类可以交互的语言.
我有一个test1.scala.html模板,如下所示:
@(title: String)(content: Html)
<!DOCTYPE html>
<html>
<head>
<title>@title</title>
</head>
<body>
@content
</body> </html>
Run Code Online (Sandbox Code Playgroud)
从顶行可以看出,模板需要一个String和一个Html参数,但我无法弄清楚如何从Java调用者代码构造Html参数!
我在我的控制器类中尝试了一些变体:
return ok(test1.render("My Title","It <em>finally</em> works!"));
Run Code Online (Sandbox Code Playgroud)
显然这很失败,因为第二个参数是String而不是Html,所以我的参数不匹配.(有一个运行时错误: actual argument String cannot be converted to Html by method invocation conversion- 这是有道理的,但我希望这里有一些魔法.:))
所以我尝试从String中创建一些Html,认为这可能是包中的某个帮助类,这可能"只是工作":
return ok(test1.render("My Title",new Html("It <em>finally</em> works!")));
Run Code Online (Sandbox Code Playgroud)
这不会编译,因为javac找不到Html类.好,可以.扫描播放文档,似乎有一个play.api.templates.Html类(用Scala编写)带有一个带String的构造函数,所以我尝试完整的包限定名:
return ok(test1.render("My Title",new play.api.templates.Html("It <em>finally</em> works!")));
Run Code Online (Sandbox Code Playgroud)
这也不会编译:我在包play.api.templates中找不到'Html'的符号.
那么:什么是让我将我的String(其中包含HTML片段)转换为我可以传递到模板的HTML对象的神奇酱油?
我正在尝试为beaglebone制作程序让我控制gpio引脚.我试图使用sprintf()但不接受输入,因为我知道.
我必须在beaglebone中重写几个文件
gpio导出激活引脚gpio gpio $ pin /方向引脚模式输入/输出gpio gpio $ pin/value引脚值1/0
家伙.. !! 只需要一个想法如何实现我的目标.
我是c ++的新手.任何信息或评论我会感谢你们的时间.
考虑以下代码:
package main
import "fmt"
type specialString string
func printString(s string) {
fmt.Println(s)
}
// unlike, say, C++, this is not legal GO, because it redeclares printString
//func printString(s specialString) {
// fmt.Println("Special: " + s)
//}
func main() {
ss := specialString("cheese")
// ... so then why shouldn't this be allowed?
printString(ss)
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:为什么定义语言以便不允许调用printString(ss)in main()?(我不是在寻找指向Golang规则的答案;我已经读过它们了,我发现specialString和string都有相同的"底层类型",两种类型都是'命名' - 如果你考虑的话要命名的泛型类型'string',Golang显然也是这样 - 因此它们不能根据规则分配.)
但为什么这样的规则呢?通过将内置类型视为"命名"类型并阻止您将命名类型传递给接受相同底层内置类型的所有标准库函数,可以解决哪些问题?有人知道语言设计师在这里想到了什么吗?
从我的角度来看,它似乎在代码中创建了许多无意义的类型转换,并且不鼓励在实际上有意义的情况下使用强类型.