小编Jam*_*s B的帖子

正则表达式删除由空格分隔的字符周围的括号

使用Perl,我试图替换围绕由空格分隔的整个单词的所有括号.例如,字符串:

$string = "A string (with words) is always easy to understand Ref: A(1,2)";
Run Code Online (Sandbox Code Playgroud)

应该成为

$string = "A string with words is always easy to understand Ref: A(1,2)";
Run Code Online (Sandbox Code Playgroud)

我可以使用lookarounds来获取匹配,但不确定如何替换括号而不是单词,即

$string =~ s/(?<=\s\()\w*(?=\)\s)//g;
Run Code Online (Sandbox Code Playgroud)

会给

$string = "A string () is always easy to understand Ref: A(1,2)";
Run Code Online (Sandbox Code Playgroud)

是否可以设置正则表达式来替换外观而不是匹配?或者我在考虑这个错误?

regex perl

3
推荐指数
1
解决办法
2205
查看次数

Firebase使用对象数组推送到数据库

firebase数据库推送方法使用唯一键将对象添加到数据库子项,例如,

postsRef.push({
  author: "gracehop",
  title: "Announcing COBOL, a New Programming Language"
});
Run Code Online (Sandbox Code Playgroud)

在数据库中放置如下内容

"posts": {
    "-JRHTHaIs-jNPLXOQivY": {
      "author": "gracehop",
      "title": "Announcing COBOL, a New Programming Language"
    }
Run Code Online (Sandbox Code Playgroud)

但是,如果我将push方法与对象数组一起使用,例如

    postsRef.push({
        {
          author: "gracehop1",
          title: "Announcing COBOL, a New Programming Language"
        },
        {
          author: "gracehop2",
          title: "Announcing COBOL, a New Programming Language"
        }});
Run Code Online (Sandbox Code Playgroud)

我在数据库中获得了一个具有枚举对象的唯一键,即

"posts": {
    "-JRHTHaIs-jNPLXOQivY": {
      "0": { 
         "author": "gracehop1",
         "title": "Announcing COBOL, a New Programming Language"
       },
      "1": {
         "author": "gracehop2",
         "title": "Announcing COBOL, a New Programming Language"
       } …
Run Code Online (Sandbox Code Playgroud)

node.js firebase firebase-realtime-database

3
推荐指数
1
解决办法
2821
查看次数

C++将operator关键字与模板一起使用?

我正忙着定义朋友操作员功能.我的代码如下:

    template <typename typ>
    class VecClass 
    {
     public:
        VecClass();
        /* other class definitions */
        friend void operator+(VecClass op1,VecClass op2);
    }

    template <typename typ>
    void VecClass<typ>::operator+(VecClass<typ> &op1,VecClass<typ> &op2)
    {
        /* do some stuff on op1 and op2 in here */
    }
Run Code Online (Sandbox Code Playgroud)

其中VecClass是一个用于创建向量并在这些向量上执行各种函数的类(注意我已经简化了代码以尝试并尽可能清晰).编译时,使用

    int main()
    {
        VecClass=a,b;
        a+b;
        return 0;
    }
Run Code Online (Sandbox Code Playgroud)

我收到以下编译错误

     error C2039: '+' : is not a member of 'VecClass<typ>'
Run Code Online (Sandbox Code Playgroud)

我显然遗漏了一些东西,并对任何建议表示感谢.感谢名单.

c++ templates operator-overloading friend

2
推荐指数
1
解决办法
169
查看次数

通过方向更改维护进度条可见性

我有一个在xml中定义的进度条(swirly waiting style):

<ProgressBar
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        style="@android:style/Widget.Holo.ProgressBar.Large"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:id="@+id/progress"
        />
Run Code Online (Sandbox Code Playgroud)

我隐藏它在活动onCreate方法中的可见性,使用,

progressBar.setVisibility(View.GONE);
Run Code Online (Sandbox Code Playgroud)

onClick使用按钮的事件启动它

progressBar.setVisibility(View.VISIBLE);
Run Code Online (Sandbox Code Playgroud)

现在,如果我更改屏幕,则进度条会消失.我知道活动在方向更改时被销毁并重新创建,活动的状态将在保存的新方向中重新创建Bundle savedInstanceState.所以我认为Bundleandroid保存的默认值不包括对ProgressBarView对象所做的任何更改吗?

如果是这种情况,是否正确地说,在ProgressBar方向改变之后恢复正确可见性的唯一方法是boolean pbState = false/true通过覆盖方法onSaveInstanceState并检查此标志onRestoreInstanceState并相应地设置可见性来保存标志(例如)?或者,我遗漏了一些关于保存视图对象状态的明显信息.

谢谢

更新:

以下提供的解决方案都有效.我决定选择放入android:configChanges="orientation|screenSize"清单xml文件.但是,文档声明此方法应仅用作最后的手段.我的活动相当简单,因此清单xml方法减少了主活动所需的代码量,即没有onRestoreInstanceState方法.我认为如果你的活动更复杂,你可能想要使用后一种方法明确定义任何状态变化.

android bundle android-progressbar

2
推荐指数
1
解决办法
4105
查看次数

具有内部构造函数的最小起订量具体类

我正在尝试 Moq 一个具有内部构造函数的具体类,即,MyAssembly我有

public class MyClass {

    internal MyClass(){}

    // other methods including factory instance method
}
Run Code Online (Sandbox Code Playgroud)

然后在“TestAssembly”中的测试中我有

var mock = new Mock<MyClass>();
Run Code Online (Sandbox Code Playgroud)

我已将MyAssembly以下内容添加到AssemblyInfo.cs

[assembly: InternalsVisibleTo("TestAssembly")]
Run Code Online (Sandbox Code Playgroud)

但即使设置TestAssembly为 的朋友MyAssembly,Moq 仍然会抛出错误

Castle.DynamicProxy.InvalidProxyConstructorArgumentsException
Can not instantiate proxy of class: Civica.Metadata.Models.Entities.Stage.
Could not find a parameterless constructor.
Run Code Online (Sandbox Code Playgroud)

Moq 是否应该能够以这种方式使用内部构造函数创建模拟?

c# moq .net-assembly

2
推荐指数
1
解决办法
1381
查看次数

将参数传递给基类构造函数C++

我喜欢在C++中将我的类声明和定义分开.因此,在标题中我可以定义一个'基础'类,如下所示:

# Base.h
class Base 
{
    int n;    
public:
    Base(int x);
};
Run Code Online (Sandbox Code Playgroud)

并在cpp文件中定义其构造函数实现,即

# Base.c
Base::Base(int x) 
{
    n = x;
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我定义一个继承'base'类的'derived'类,我可以将参数传递给基类,如下所示:

#Derived.h
class Derived : public Base
{
    int t;
public:
    Derived(int y) : Base(t) {t = y;}
}
Run Code Online (Sandbox Code Playgroud)

但是这样做需要我将Derived类的构造函数的主体放在头文件中,即,{t = y;}因此构造函数定义不再与其声明分开.有没有办法将参数传递给类的基类构造函数,仍然允许我在cpp文件中定义派生类的构造函数?

c++ inheritance constructor class

1
推荐指数
1
解决办法
6991
查看次数

使用STL容器的C++内存泄漏

以下代码给我一个内存泄漏(使用Visual Studio):

#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
#include <vector>
#include <memory>

struct Listener {};

struct Subject
{
    std::vector<Listener*> listeners;
};

int main(void)
{
    Subject subject;
    _CrtDumpMemoryLeaks();
    return 1;
}
Run Code Online (Sandbox Code Playgroud)

我认为这是因为当Subject实例化类时,STL向量容器在堆上使用内存.当程序退出时,如何确保向量容器被销毁?(我尝试在Subject析构函数中删除容器,但这似乎不起作用).

c++ memory-leaks stl

1
推荐指数
1
解决办法
1276
查看次数

带Webpack 2和Angular 2的TS2304

我一直在关注如何使用带有角度2的webpack 2的angular 文档.我的代码(这里是github src )是根据webpack.dev.js场景设置的.

使用npm start(即webpack-dev-server --inline --progress --port 8080)运行开发构建会产生一系列TS2304错误,例如

ERROR in [at-loader] src\app\app.component.ts:5:15
    TS2304: Cannot find name 'require'.

ERROR in [at-loader] src\app\app.component.ts:6:14
    TS2304: Cannot find name 'require'.
Run Code Online (Sandbox Code Playgroud)

出了什么问题?

typescript webpack webpack-dev-server angular

1
推荐指数
1
解决办法
855
查看次数

弱引用不被垃圾收集

我的理解是,在对Targeta 的所有强引用WeakReference都设置为 null 并调用 GC 后,该弱引用不应再存在。

然而,下面的代码似乎没有遵循这个期望:

    static void Main(string[] _) {
        var person = new Person();
        var wr = new WeakReference(person);

        person = null;

        // We should have access to the person here
        if (wr.Target is Person shouldExist)
        {
            Console.WriteLine($"Person exists! IsAlive: {wr.IsAlive}.");
            shouldExist = null;
        }
        else
        {
            Console.WriteLine($"Person does not exist :( IsAlive: {wr.IsAlive}.");
        }

        // Invoke GC.Collect.            
        GC.Collect();


        if (wr.Target is Person shouldNotExist)
        {
            Console.WriteLine("This person should have been garbage collected");
            Console.WriteLine($"IsAlive: …
Run Code Online (Sandbox Code Playgroud)

c# weak-references visual-studio

1
推荐指数
1
解决办法
95
查看次数

Perl正则表达式删除数字/标点符号组合

我正在尝试删除由空格分隔的字符串中的所有数字/标点符号组合,即

$string = " 13-acetate 9-11 777 >3 ctl-54 2!3 ";
Run Code Online (Sandbox Code Playgroud)

应该成为

$string = " 13-acetate ctl-54 ";
Run Code Online (Sandbox Code Playgroud)

我的尝试如下

$string =~ s/\s+[\d*[:punct:]>]+\s+//g;
Run Code Online (Sandbox Code Playgroud)

但是这给了我

$string = " 13-acetate 777 ctl-54 ";
Run Code Online (Sandbox Code Playgroud)

感谢指出我出错的地方.

regex perl

0
推荐指数
1
解决办法
198
查看次数