我正在编写一些使用Apache POI API的Scala代码.我想迭代java.util.Iterator我从Sheet类中获得的行.我想在for each样式循环中使用迭代器,所以我一直在尝试将其转换为原生的Scala集合,但没有运气.
我查看了Scala包装器类/特性,但我看不出如何正确使用它们.如何在不使用详细while(hasNext()) getNext()循环样式的情况下迭代Scala中的Java集合?
这是我根据正确答案编写的代码:
class IteratorWrapper[A](iter:java.util.Iterator[A])
{
def foreach(f: A => Unit): Unit = {
while(iter.hasNext){
f(iter.next)
}
}
}
object SpreadsheetParser extends Application
{
implicit def iteratorToWrapper[T](iter:java.util.Iterator[T]):IteratorWrapper[T] = new IteratorWrapper[T](iter)
override def main(args:Array[String]):Unit =
{
val ios = new FileInputStream("assets/data.xls")
val workbook = new HSSFWorkbook(ios)
var sheet = workbook.getSheetAt(0)
var rows = sheet.rowIterator()
for (val row <- rows){
println(row)
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在为模拟航空公司预订数据库编写预订程序,我真正想做的是这样的:
IF EXISTS (SELECT * FROM LeadCustomer
WHERE FirstName = 'John' AND Surname = 'Smith')
THEN
INSERT INTO LeadCustomer (Firstname, Surname, BillingAddress, email)
VALUES ('John', 'Smith', '6 Brewery close,
Buxton, Norfolk', cmp.testing@example.com');
Run Code Online (Sandbox Code Playgroud)
但Postgres不支持IF语句而不加载PL/pgSQL扩展.我想知道是否有办法做一些相当于这个或者如果在这一步中只需要进行一些用户交互?
我理解Node.js中异步事件的基本原理,我正在学习如何以这种方式编写代码.但是,我遇到以下情况:
我想编写偶尔暂停用户输入的代码.
该程序不是作为服务器(虽然目前它是用于命令行).我意识到这是Node的非典型用法.我的目标是最终将程序迁移回客户端Javascript应用程序,但我发现在Node.js中工作既迷人又对调试非常有用.这让我回到我的例子来说明问题:
它读入一个文本文件并输出每一行,除非该行以"?"结尾.在这种情况下,应暂停用户澄清该行的含义.目前我的程序首先输出所有行,并在最后等待澄清.
有没有办法强制node.js暂停命令行输入,以适应条件触发的情况(即,行以"?"结尾)?
var fs = require("fs");
var filename = "";
var i = 0;
var lines = [];
// modeled on http://st-on-it.blogspot.com/2011/05/how-to-read-user-input-with-nodejs.html
var query = function(text, callback) {
process.stdin.resume();
process.stdout.write("Please clarify what was meant by: " + text);
process.stdin.once("data", function(data) {
callback(data.toString().trim());
});
};
if (process.argv.length > 2) {
filename = process.argv[2];
fs.readFile(filename, "ascii", function(err, data) {
if (err) {
console.error("" + err);
process.exit(1);
}
lines = data.split("\n");
for (i = 0; i < lines.length; i++) { …Run Code Online (Sandbox Code Playgroud) 我想更多地使用jenkins脚本控制台.
我需要查看哪些内容才能找到可以通过groovy使用的可用对象/方法的列表?网上有什么东西吗?我应该在Github上浏览源代码吗?我从哪里开始?
就像在这个例子中一样,我如何知道hudson.model.Hudson.instance.pluginManager.plugins存在并准备从jenkins脚本控制台调用?
println(hudson.model.Hudson.instance.pluginManager.plugins)
Run Code Online (Sandbox Code Playgroud)
谢谢!
我意识到,如果你有一个可迭代的,你应该总是使用.join(iterable)而不是for x in y: str += x.但是,如果只有固定数量的变量尚未在迭代中,.join()仍然使用推荐的方式?
比如我有
user = 'username'
host = 'host'
Run Code Online (Sandbox Code Playgroud)
我该怎么做
ret = user + '@' + host
Run Code Online (Sandbox Code Playgroud)
要么
ret = '@'.join([user, host])
Run Code Online (Sandbox Code Playgroud)
从性能的角度来看,我并没有那么多问,因为两者都是非常微不足道的.但我读到这里的人说总是使用.join(),我想知道是否有任何特殊原因,或者它通常是一个好主意使用.join().
我有一张桌子:
| This | Is | A | Table |
| :--- | -- | - | ----: |
| foo | ba | r | elbaT |
Run Code Online (Sandbox Code Playgroud)
我希望表格显示在我的Markdown文件的中心而不是左对齐.我不是要对齐文本,而是整个表本身.我是否需要求助于HTML/CSS来实现我想要的目标?
这是一个Apiary.io项目.
如何使用自定义按钮显示ExtJS消息框.
我想要一个带有自定义消息的消息框以及"取消"和"取消激活"按钮.请提出一些想法.
buttons: [{
text: "Cancel",
handler: function () {
Ext.MessageBox.hide();
//submitTicketForm();
}
},{
text: "Deactivate",
handler: function () {
Ext.MessageBox.hide();
}
}],
Run Code Online (Sandbox Code Playgroud)
我正在使用它,但没有得到任何按钮.
我正在使用Play Framework 2.1.1使用本地Postgres数据库和Slick 1.0.0 编写Scala Web应用程序,我在这里遇到了似乎是矛盾的问题.
这是我遇到的错误:
[SQLException: No suitable driver found for postgres://user:password@localhost:5432/postgres]
56
57 def instance = Action {
58 Database.forURL("postgres://user:password@localhost:5432/postgres", driver = "org.postgresql.Driver") withSession {
59 val q = Retailer.map(_.name)
60 Ok(views.html.instance(q.list, newRForm))
61 }
62 }
63
Run Code Online (Sandbox Code Playgroud)
其中user和password分别是username和passwordPostgres数据库里的.
在java错误(找不到合适的驱动程序)我发现:
Class.forName("org.postgresql.Driver");在Application.scala我有以下代码块:
{
println(ConfigFactory.load().getString("db.default.url"))
println(Class.forName("org.postgresql.Driver"))
}
Run Code Online (Sandbox Code Playgroud)
重新运行play compile导致:
(Server started, use Ctrl+D to stop and go back to the …Run Code Online (Sandbox Code Playgroud) 我已经被困在这个特定的问题上大约一个星期了,我想我会在这里写下这个问题来清除我的想法并得到一些指导.
所以我有这个case类有一个java.sql.Timestamp字段:
case class Request(id: Option[Int], requestDate: Timestamp)
我想将其转换为JsObject
val q = Query(Requests).list // This is Slick, a database access lib for Scala
printList(q)
Ok(Json.toJson(q)) // and this is where I run into trouble
Run Code Online (Sandbox Code Playgroud)
"找不到类型为List [models.Request]的Json反序列化器.尝试为此类型实现隐式写入或格式化." 好的,这是有道理的.
implicit val requestFormat = Json.format[Request] // need Timestamp deserializer
implicit val timestampFormat = (
(__ \ "time").format[Long] // error 1
)(Timestamp.apply, unlift(Timestamp.unapply)) // error 2
Run Code Online (Sandbox Code Playgroud)
Description Resource Path Location Type overloaded method value format …Run Code Online (Sandbox Code Playgroud) 如何在EXT JS中创建同步ajax请求?
例如,给定此代码:
test1();
ajaxRequest(); //Ajax Request
test2();
Run Code Online (Sandbox Code Playgroud)
执行test2函数时甚至没有完成执行ajaxRequest(),有一个Ext.Ajax.request调用.
如何在text2()执行ajaxRequest()函数后才能执行?
我知道这样做的一种方法是test2在回调中调用函数,但是我有一些依赖项和许多代码必须在ajax请求之后以同步方式执行.能帮我解决一下这个问题吗?
scala ×3
extjs ×2
java ×2
postgresql ×2
ajax ×1
apiary.io ×1
apiblueprint ×1
collections ×1
database ×1
extjs3 ×1
function ×1
groovy ×1
insert-into ×1
javascript ×1
jenkins ×1
markdown ×1
node.js ×1
python ×1
slick ×1