使用 Firestore 安全规则(版本 2),如何将 Path 对象转换为字符串?整个路径作为一个字符串,而不是各个片段。
我正在尝试编写一个通用函数以在各种 Match 语句中使用。像这样的东西:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
// "pathobj" is a rules.firestore.Path object
function getPathAsString(pathobj) {
// Does not work:
return pathobj.toString();
}
// I would expect the following to evaluate to True:
match /foo/{fooid} {
allow read: if getPathAsString(path('one')) == 'one'
&& getPathAsString(path('one/!two')) == 'one/!two';
}
}
}
Run Code Online (Sandbox Code Playgroud)
有谁知道这是否可能?我阅读了Path 上的文档,并在Firestore Rules Simulator中尝试了各种方法,但都没有成功。
有没有办法强制使用@Override 注释?
只是为了澄清,我不是在问“我如何强制子类实现一个方法”(像这样):
public abstract class BaseClass {
public abstract void foo();
}
Run Code Online (Sandbox Code Playgroud)
我专门询问这种情况:
public class AnnotatedSubclass extends BaseClass {
@Override
public void foo() {
System.out.println("I have @Override.");
}
}
public class NonAnnotatedSubclass extends BaseClass {
public void foo() {
System.out.println("I do not have @Override.");
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,即使NonAnnotatedSubclass没有明确的@Override注释,两者都可以编译。有没有办法让编译器在这种情况下抛出错误/警告NonAnnotatedSubclass?
我问,因为有时当我扩展类时,我不小心覆盖了父方法,因为它们的名称与我要创建的名称相似(如.paint()在 Swing 中)。
给定两个函数func1和f2,具有以下签名:
void func1(){
int baba = 12345;
// printf the value of baba here
}
void f2(){
int loo;
//printf the value of loo here
}
Run Code Online (Sandbox Code Playgroud)
...如果我运行我的int main,它只有func1然后f2:
int main(){
func1();
f2();
}
Run Code Online (Sandbox Code Playgroud)
...那么baba和loo的印刷价值将是12345.所以我的问题如下:
这是定义的行为,还是我的机器所做的错误?
如果这不是我的计算机做的一些错误的事情,你能解释为什么编译器选择存储loo在同一地址baba?
编辑: 我想我应该问,如果我有这两个EXACT两个函数,baba和loo在任何机器上都有相同的值吗?
我知道厕所的价值是巴巴剩余比特的结果,我明白(至少在我的机器上)两者的堆叠正在布置,以便厕所重叠到巴巴的旧领土上. 是不是每台机器都会以baba和loo重叠的方式放置这两个功能堆栈?完全按照书面使用这两个功能,即......
我正在尝试从C#应用程序运行PowerShell脚本。我知道如何使用绝对路径:
using (PowerShell pshell = PowerShell.Create())
{
pshell.AddScript( @"C:\Path\To\Webapp\psScript.ps1" );
pshell.Invoke();
}
Run Code Online (Sandbox Code Playgroud)
我不知道该怎么做是使用相对路径。我psScript.ps1的目录与Visual Studio项目位于同一目录中,并且我想使用相对路径(例如./psScript.ps1),这样当我将项目发布/导出到不同的计算机时,脚本的路径就不会变成无效
那么,如何在PowerShell.AddScript()方法中使用相对路径?任何帮助,将不胜感激!
我在这里看了一下,但这没有回答我的问题: PowerShell:从脚本目录运行命令
我正在编写一个C#ASP.NET Web Form Application.为了简明起见,此应用程序从服务器检索数据并将其显示给用户.
要访问此服务器,我的应用程序需要生成登录信息.生成登录信息需要几分钟.此登录信息每天都会更改,但对于使用我的应用程序的所有人(在特定日期)都是如此.
我的应用程序将每天被数百人使用.让每个用户等几分钟来检索登录信息对我来说很愚蠢.
理想情况下,我想每天收集一次登录信息,并将结果存储在我的服务器上.
有小费吗?我知道.NET有Cache和Session,但对于一个个人用户的唯一的存储数据.您是否有任何存储此登录信息的技术,以便我可以从我的代码隐藏中获取它?
假定A通过Z将26类我所定义.在以下示例中:
private List<A> _listA;
private List<B> _listB;
// private List<C>, and so on, through...
private List<Z> _listZ;
private void setLabelA()
{
LabelA.Text = _listA.Count;
}
// private void setLabelB() exists
// and so does setLabelC()
// and so on, all the way through to...
private void setLabelZ()
{
LabelA.Text = _listZ.Count;
}
Run Code Online (Sandbox Code Playgroud)
在我看来除了以下之外没有办法缩短这个:
private void setLabel<genericType>(List<genericType> list)
{
if(list is List<A>) LabelA.Text = _listA.Count;
else if(list is List<B>) LabelB.Text = _listB.Count;
else if(list is List<C>) LabelC.Text …Run Code Online (Sandbox Code Playgroud) 我有一个关于这个foreach的问题:
for(Element e : nullProof(setOfElements)){
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
让我们假设我定义了函数nullProof来返回一个非null的Set(因为我听说你不应该将null传递给一个增强的for循环.这是真的吗?):
private Set<Element> nullProof(Set<Element> s){
return s == null ? Collections.<Element> emptySet() : s;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是...... 在foreach中调用nullProof函数是否安全?具体来说,以下标题相当于:
for(Element e : setOfElements){ //assuming setOfElements != null
Run Code Online (Sandbox Code Playgroud)
我想知道是否有人可以指出一些Java标准,它说这是定义的行为.
此外,有人可以解释这个foreach被称为"幕后"实际发生的事情吗?
假设setOfElements的大小为6.对于通过setOfElements的每次迭代,JVM是否会查找setOfElements 6次,还是创建该组的副本并引用该副本?我试图理解这种行为.谢谢您的帮助!
我想知道是否可以提前退出函数,绕过正文中的其余代码.例如:
public class SOMECLASS {
public SOMECLASS( int i ) {
gotoSwitchCase(i);
additionalTask(); // method body is irrelevant
}
private void gotoSwitchCase(int i) {
switch (i) {
case 0:
/* exit ctor prematurely */
break;
default:
/* set some instance variables, return to ctor */
}
}
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以if(i==0){return;}在开始时插入additionalTask()以跳过该部分.但是,我更感兴趣的是,是否有一种方法可以优雅地退出构造函数(或任何函数)而无需访问其余部分.类似于例外,但不是致命的.