我正在网上冲浪,寻找if语句的简写Javascript表示法.只有if,而不是其他.我的问题:它存在吗?例如:
(i === 0) ? onlyMyTrueValue;
Run Code Online (Sandbox Code Playgroud)
我似乎找到的唯一片段就是这个:
(i === 0) ? myTrueValue : myFalseValue;
Run Code Online (Sandbox Code Playgroud) 我被添加到一个新项目,但只是为了查看代码,现在我开始看到我的仪表板中的每个提交,它污染了我的整个仪表板..有没有办法让我可以隐藏项目活动,只是看到在仪表板中我想要的那些?
我正在使用pymongo编写代码,它使用聚合框架将一些数据保存在其他集合中.代码是这样的:
from pymongo import MongoClient
def makeAggregate():
print 'Making aggregation of commits..'
commitsCollection = MongoClient("mongo-srv", 27017).gt.commits
rankingCollection = MongoClient("mongo-srv", 27017).gt.commitsRanking
pipe = [{'$unwind': '$commits'},{'$group':{"_id":"$_id", "picture": {"$first": "$picture"},'a':{'$sum':'$commits.a'},'d':{'$sum':'$commits.d'},'c':{'$sum':'$commits.c'}}}]
cursor = commitsCollection.aggregate(pipeline=pipe)
obj = next(cursor, None)
while obj:
rankingCollection.save(obj)
obj = next(cursor, None)
makeAggregate()
Run Code Online (Sandbox Code Playgroud)
代码在我的计算机上工作正常,但是当我将脚本移动到服务器时,脚本失败了,说:
Traceback (most recent call last):
File "aggregate.py", line 17, in <module>
makeAggregate()
File "aggregate.py", line 12, in makeAggregate
obj = next(cursor, None)
TypeError: dict object is not an iterator
Run Code Online (Sandbox Code Playgroud)
该命令python --version返回
在我的电脑上:
Python 2.7.3
在服务器上 …
今天我看到了一段我以前从未见过的代码:
var a = 1;
var b = 2;
var c = { a, b };
Run Code Online (Sandbox Code Playgroud)
这会创建一个对象(分配给c),它包含两个键,它们是变量的名称,值是变量的值,如下所示:
{
a: 1,
b: 2
}
Run Code Online (Sandbox Code Playgroud)
这是正常的吗?我找不到与此相关的任何内容或以这种方式创建对象.我在chrome上测试了它并且它被罚了,但我不确定这是否适用于每个浏览器.
我希望以这种方式创建对象:
var c = { a: a, b: b };
Run Code Online (Sandbox Code Playgroud) 我想在freemarker中创建一个现有模型的新模型,以便于使用.
我的模型是这样的:
[
{
"id": "1",
"type": "TYPE_1",
"code": "CODE_OF_TYPE_1"
},
{
"id": "2",
"type": "TYPE_1",
"code": "ANOTHER_CODE_OF_TYPE_1"
},
{
"id": "3",
"type": "TYPE_2",
"code": "CODE_OF_TYPE_2"
},
{
"id": "4",
"type": "TYPE_2",
"code": "ANOTHER_CODE_OF_TYPE_2"
}
]
Run Code Online (Sandbox Code Playgroud)
我想做到这样的事情:
{
"TYPE_1": {
"CODE_OF_TYPE_1": "1",
"ANOTHER_CODE_OF_TYPE_1": "2"
},
"TYPE_2": {
"CODE_OF_TYPE_2": "3",
"ANOTHER_CODE_OF_TYPE_2": "4"
}
}
Run Code Online (Sandbox Code Playgroud)
您可能知道,在freemarker中为哈希分配密钥有点奇怪..
我做的是这样的:
<#assign preferencesByCode = {} />
<#list preferences as preference>
<assign preferencesByCode = preferencesByCode + {preference.type : { preference.code: preference.id } } />
</#list>
Run Code Online (Sandbox Code Playgroud)
但这样做,它只保留最后一个id,所以我只有一种类型..
那么我试过这个: …
我有一些情况下使用Java 8 Stream让我重复执行某些操作,如果没有Stream就可以避免,但我认为问题不在于流,而在于我.
一些例子:
private class Item {
String id;
List<String> strings;
}
// This method, filters only the Items that have the strToFind, and
// then maps it to a new string, that has the id and the str found
private void doIt(List<Item> items, String strToFind) {
items.stream().filter(item -> {
return item.strings.stream().anyMatch(str -> this.operation(str, strToFind));
}).map(item -> {
return item.id + "-" + item.strings.stream()
.filter(str -> this.operation(str, strToFind)).findAny().get();
});
}
// This operation can have a lot of overhead, …Run Code Online (Sandbox Code Playgroud) 我试图在一个循环中获得calculateValue的最大值,我希望它是线程安全的.所以我决定使用AtomicInteger和Math.max,但我找不到解决方案,因此可以将操作视为原子操作.
AtomicInteger value = new AtomicInteger(0);
// Having some cycle here... {
Integer anotherCalculatedValue = ...;
value.set(Math.max(value.get(), anotherCalculatedValue));
}
return value.get()
Run Code Online (Sandbox Code Playgroud)
问题是我做了两个操作,因此不是线程安全的.我怎么解决这个问题?唯一的方法是使用synchronized?
我知道有些问题可能与此有关,但是我没有找到与javascript严格相关的任何内容。
但是我的问题是:编写Javascript对象时是否应该使用引号?
我认为写没有引号也可读性更好,但是可以吗?
例如,当我使用它作为参数传递时:
myFunction({
"key": "value",
"otherKey": 10
});
myFunction({
key: "value",
otherKey: 10
});
Run Code Online (Sandbox Code Playgroud)
另外,正如我所读到的那样,第二个代码在每个浏览器中都可以使用,除非它是一个禁止的单词(例如,如果,等等),所以这不是问题。
我认为第二个看起来更好,但我也认为这可能不是一个好习惯。
我做了多年的练习,现在我开始觉得我错了,但是使用引号我感觉不好。我该怎么办?
在你说它重复之前,我已经读过:如何将可变数量的参数从一个函数传递到另一个函数?
我有这样的功能:
void tlog_function(t_log* logger, const char* message_template, ...) {
pthread_mutex_lock(&loggerLock);
log_function(logger, message_template, ...); // What I want to do..
pthread_mutex_unlock(&loggerLock);
}
Run Code Online (Sandbox Code Playgroud)
而另一个这样的功能,不是我的,我在第三方库中使用它:
void log_function(t_log* logger, const char* message_template, ...);
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我想要做的只是在这个函数中添加一个互斥锁以使其具有线程安全性,我知道我可以使用va_list但在这种情况下我无法更改第二个函数的代码,因为它在库中我只有.h文件.
那么,有没有办法实现这一目标?
我有一个对象流,它根据它们拥有的id定义equals和hashcode.所以我知道使用stream.distinct()我会得到一个没有任何重复的流,但它会保留第一个外观,而不是最后一个.
这在文档中明确说明:
对于有序流,不同元素的选择是稳定的*(对于重复元素,将保留遇到*顺序中首先出现的元素.)
那么我怎么能有一个没有重复的流,但保持最后的外观呢?
例如,如果我有这个项目列表1,2,3,1,4,5.
如果我申请,distinct()我会得到1,2,3,4,5,我期待:2,3,1,4,5.我怎样才能做到这一点?
根据这个答案,我知道我可以使用in运算符检查属性是否存在.所以我在很多代码中看到它常用,例如:
if ("gapi" in window) {
gapi.login(...);
}
Run Code Online (Sandbox Code Playgroud)
但这样做会不会更好?
if (window.gapi) {
gapi.login(...);
}
Run Code Online (Sandbox Code Playgroud)
我所知道的唯一的区别是,如果变量存在,但它的价值是第二个将返回false undefined,false,0,null计算结果为假或其他价值; 并且第一个将返回true,对吗?
那么,还有其他区别吗?我应该使用哪一个?
这是一个非常简单的问题:
当你编译一个java程序时,它被转换为字节代码,因此,错过了.java或.class文件的每个行号(我想是的,可能我错了..).因此,当您打印堆栈跟踪时,它如何设置获取调用堆栈中的所有类名和行号?我想我可能在这里遗漏了一些东西,但我找不到任何与此有关的东西.
java ×4
javascript ×4
java-stream ×2
object ×2
ansi-c ×1
arguments ×1
atomic ×1
bytecode ×1
c ×1
freemarker ×1
function ×1
git ×1
gitlab ×1
hash ×1
java-8 ×1
json ×1
mongodb ×1
performance ×1
pymongo ×1
python ×1
stack-trace ×1
variables ×1