我有一个代表数独游戏的9x9多维数组.我需要将其分解为9个3x3多个组件.怎么做?我完全不知道从哪里开始.
game = [
[1, 3, 2, 5, 7, 9, 4, 6, 8],
[4, 9, 8, 2, 6, 1, 3, 7, 5],
[7, 5, 6, 3, 8, 4, 2, 1, 9],
[6, 4, 3, 1, 5, 8, 7, 9, 2],
[5, 2, 1, 7, 9, 3, 8, 4, 6],
[9, 8, 7, 4, 2, 6, 5, 3, 1],
[2, 1, 4, 9, 3, 5, 6, 8, 7],
[3, 6, 5, 8, 1, 7, 9, 2, 4],
[8, 7, 9, 6, …
Run Code Online (Sandbox Code Playgroud) 我对所有扩展抽象类的子类使用依赖项注入。
在抽象构造函数类中,如果需要的话,我启动了一个计划在其子级中覆盖的方法。
我陷入了一个问题,即从super启动的重写类中看不到注入的依赖项。
这是代码示例:
abstract class Base {
constructor(view: string) {
this._assemble();
}
protected _assemble(): void {
console.log("abstract assembling for all base classes");
}
}
class Example extends Base {
constructor(view: string, private helper: Function) {
super(view);
console.log(this.helper);
}
public tryMe(): void {
this._assemble();
}
protected _assemble(): void {
super._assemble();
// at first run this.helper will be undefined!
console.log("example assembling", this.helper);
}
}
let e = new Example("hoho", function () { return; })
console.log("So now i will try to reassemble..."); …
Run Code Online (Sandbox Code Playgroud) Firebase数据库用户知道有两个用于监听数据的基本监听器:ValueEventListener
和ChildEventListener
.当我们听一个对象时它很有用,但是当我们听一些收集时变得非常困难.
要指定问题,让我们假设我们有HackerNews提要,我们在Firebase中监听例如"posts"对象.
当然我们RecyclerView
在我们的应用程序中显示帖子,我认为好主意是使用FirebaseUI,但问题是我们想要在更改服务器端或测试的情况下制作更抽象的应用程序.所以我们会使用一些适配器,但这是另一个问题.
正如我所提到的,我们有两个听众,问题哪个更好?
当我们使用时,ValueEventListener
我们将获得整个收集,但是如果有任何更改,例如一个用户更改了帖子的内容,我们将不得不重新加载整个数据,这意味着通过昂贵的网络传输发送更多字节.另一个问题是当我们使用multilisteners时,这里是示例:
Post有userId,但我们想显示他的名字,所以在onDataChanged
方法中我们获取用户数据,如下所示:
postsReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot data : dataSnapshot.getChildren()) {
Post post = data.getValue(Post.class);
usersReference.child(post.getUserId()).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// Here we have user data
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
Run Code Online (Sandbox Code Playgroud)
你可以看到,现在我们必须分别添加每个帖子RecyclerView
,这将给我们提供可能我们应该使用的线索ChildEventListener
.
所以现在当我们使用``ChildEventListener时问题是一样的 - …
我可能会遗漏一些必要的东西,但是我无法找到一种方法来"正确地"在Python(2.7)中对浮点数/小数点进行舍入,至少小数点后三位.通过'正确',我的意思是1.2225应该舍入到1.223,并且1.2224应该舍入到1.222.
我知道round
在设计中不能用于Python中的浮点数,但我似乎无法Decimal
按预期行事,也不能按ceil
功能行事.寻找内置功能而不是自定义功能变通方法,但两者都是开放的.
>>> x = 1.2225 # expected: 1.223
>>> round(x, 3)
1.222 # incorrect
>>> from math import ceil
>>> ceil(x * 1000.0) / 1000.0
1.223 # correct
>>> y = 1.2224 # expected: 1.222
>>> ceil(y * 1000.0) / 1000.0
1.223 # incorrect
>>> from decimal import Decimal, ROUND_UP, ROUND_HALF_UP
>>> x = Decimal(1.2225)
>>> x.quantize(Decimal('0.001'), ROUND_UP)
Decimal('1.223') # correct
>>> y = Decimal(1.2224)
>>> y.quantize(Decimal('0.001'), ROUND_UP)
Decimal('1.223') # incorrect
>>> y.quantize(Decimal('0.001'), …
Run Code Online (Sandbox Code Playgroud) 请注意:关于如何在此站点上测试单个shell变量有很多问题.这个问题是关于测试任何未定义变量的脚本.
您可以在bash中使用未定义的变量,而不会在执行时看到任何错误:
#!/bin/bash
echo ${UNDEF_FILE}
ls -l ${UNDEF_FILE}
exit 0
Run Code Online (Sandbox Code Playgroud)
我发现这很容易出错.如果我想在大脚本中更改变量的名称,或者删除该变量,则所有先前过时的引用都将导致脚本中的错误.有时这对于调试来说并不明显,或者你发现它为时已晚.
为什么允许这样做?有没有办法标记未定义的变量?
我在 Redshift 中有 2 个表,其中一个有一列包含正则表达式字符串。我想像这样加入他们:
select *
from one o
join two t
on o.value ~ t.regex
Run Code Online (Sandbox Code Playgroud)
但这个查询会抛出一个错误:
[Amazon](500310) Invalid operation: The pattern must be a valid UTF-8 literal character expression
Details:
-----------------------------------------------
error: The pattern must be a valid UTF-8 literal character expression
code: 8001
context:
query: 412993
location: cgx_impl.cpp:1911
process: padbmaster [pid=5211]
-----------------------------------------------;
Run Code Online (Sandbox Code Playgroud)
据我在文档中搜索的了解,正则表达式运算符的右侧~
必须是字符串文字。
所以这会起作用:
select *
from one o
where o.value ~ 'regex'
Run Code Online (Sandbox Code Playgroud)
这会失败:
select *
from one o
where 'regex' ~ o.value
Run Code Online (Sandbox Code Playgroud)
有没有办法解决?我错过了什么吗?
谢谢!
我有一个promise-returns函数,可以执行一些异步操作,让我们调用它functionToRepeat()
.
我正在尝试编写该函数repeatFunction(amount)
,以便它将启动承诺,等待完成,再次启动它,等待完成,等等一定时间.这repeatFunction(amount)
也应该是可以的,以便我可以在执行后链接其他东西.
这是我的尝试:
function functionToRepeat(){
let action = new Promise(function(resolve,reject){
setTimeout(function(){
console.log("resolved!");
resolve()}
,1000);
})
return action
}
function repeatFunction(amount) {
if(amount==0){
return Promise.resolve();
}
return functionToRepeat().then(function(){
repeatFunction(amount-1);
});
}
repeatFunction(5).then(function(){
console.log("DONE!");
})
Run Code Online (Sandbox Code Playgroud)
这成功地链接了我的承诺(或者接缝,我在控制台中每秒得到一个"解决!").然而,在第一个承诺结束.then()
后,我试图在我repeatFunction(5)
发生之后链接,而不是在所有5个结束之后!
所以在我的控制台中,我得到:
解决!DONE!解决!解决!解决!解决!
我做错了什么,我应该改变什么?
我很难使用带有API密钥的Google Places API自动填充功能。在我的生产站点中,我们没有密钥地使用它,可以正常工作,直到流量达到请求限制。经过研究,发现使用API密钥可以获得更高的请求限制。但是,在添加密钥(甚至没有限制)之后,表单中的地址字段将被禁用,并显示“糟糕!出了点问题。”。
这是我正在使用https://maps.googleapis.com/maps/api/js?key=[my_api_key]&libraries=places&callback=initAutocomplete的 Google API URL
我以为我的代码一定有问题。然后,我将Google的官方自动完成示例代码与我的API密钥一起使用,无需进一步修改,结果相同。不用钥匙就可以使用它。
我很困惑 我不认为代码是错误的。有人可以给我提示吗?
Time.now #=> 2007-11-19 08:27:30 -0600
Run Code Online (Sandbox Code Playgroud)
我希望得到区偏移0600从Time.now.如果存在,则欢迎Native ruby函数.
我尝试了什么:
Time.now.to_s.byteslice(-5..-1) #=> "-0600" as String
Run Code Online (Sandbox Code Playgroud)
它适用于我的时区(GET + 1),但我想找到更好的方法.
android ×2
arrays ×2
javascript ×2
ruby ×2
autocomplete ×1
bash ×1
country ×1
es6-promise ×1
firebase ×1
java ×1
linux ×1
literals ×1
promise ×1
python ×1
python-2.7 ×1
regex ×1
shell ×1
transpiler ×1
typescript ×1