小编Mop*_*ath的帖子

c ++ nlohmann json - 如何迭代/查找嵌套对象

我试图使用nlohmann :: json迭代嵌套的json.我的json对象如下:

{
    "one": 1,
    "two": 2
    "three": {
        "three.one": 3.1
    },
}
Run Code Online (Sandbox Code Playgroud)

我试图迭代和/或找到嵌套对象.但是,它似乎没有默认支持.看起来我必须通过创建另一个循环遍历每个子对象,或者为每个子对象递归调用fn.

我的下面一段代码及其结果表明,只有顶级迭代才有可能.

void findNPrintKey (json src, const std::string& key) {
  auto result = src.find(key);
  if (result != src.end()) {
    std::cout << "Entry found for : " << result.key() << std::endl;
  } else {
    std::cout << "Entry not found for : " << key << std::endl ;
  }
}


void enumerate () {

  json j = json::parse("{  \"one\" : 1 ,  \"two\" : 2, \"three\" : { …
Run Code Online (Sandbox Code Playgroud)

c++ json nlohmann-json

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

AspectJ:如何在get()切入点中获取访问字段的值

我正在编写一个方面记录器来在访问给定类中的任何成员变量时写入日志.

如果我为下面的单个变量写一个特定的切入点,我就能得到该字段的值.

@Pointcut("get(* abc.ThreadPoolService.drMaxTh)")
public void drFields() {}

@AfterReturning(pointcut="drFields()", returning="drMaxTh")  
public void afterAccessingdrFields(int drMaxTh) {
    LOGGER.info("Accessed the field drMaxTh " + drMaxTh);
}
Run Code Online (Sandbox Code Playgroud)

但我的班级有十几个+变量,我不打算为每个变量编写特定的切入点.所以,我想写点像...

@Pointcut("get(* abc.ThreadPoolService.*)")
public void drFields() {}

@AfterReturning(pointcut="drFields()", returning= **????** )  
public void afterAccessingdrFields(what should come here???) {
    LOGGER.info("Accessed the field drMaxTh " + <and here???>);
}
Run Code Online (Sandbox Code Playgroud)

但是在通配符字段访问说明符的情况下,无法理解如何捕获正在访问的字段的名称和值.

对任何人帮助我解决这个问题.

java aspectj

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

带有通配符字段的 redis hmget

我在 redis 中有一个哈希集,如下所示。

"abcd" : {
    "rec.number.984567": "value1",
    "rec.number.973956": "value2",
    "rec.number.990024": "value3",
    "rec.number.910842": "value4",
    "rec.number.910856": "...",
    "other.abcd.efgh": "some value",
    "other.xyza.blah": "some other value"
    "..." : "...",
    "..." : "...",
    "..." : "...",
    "..." : "..."
}
Run Code Online (Sandbox Code Playgroud)

如果我调用 hgetall abcd,它会给我哈希中的所有字段。我的目标是仅获取哈希集中以“rec.number”开头的字段。当我打电话时

  redis-cli hmget "abcd" "rec.number*", 
Run Code Online (Sandbox Code Playgroud)

它给了我这样的结果

1)
Run Code Online (Sandbox Code Playgroud)

有没有办法只检索那些以我的预期模式开头的键的数据?我只想检索这些键,因为我的数据集包含许多其他不相关的字段。

redis redis-cli

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

摩卡(mocha)-before()没有按预期执行'before'吗?

在mocha + chai测试代码中,我有一个before块来初始化一些变量“ accPolicyData.accSizes”。

  1 var expect = require('chai').expect;
  2 var dataDriven = require('data-driven');
  3 var accPolicyData = require("./samples/accounts-policy-data");
  4 var configReadr;
  5 var ecpDB;    // = require('ecp_model');
  6 var utils = require('../test_utils');
  7 
  8 describe("Test suite for account policy limits validation", function() {
  9 
 10   before(function(done) {  
 11 
 12     // read and process commandline args.
 13     var args = utils.processArgs(process.argv);
 14     console.log("Args:", args);
 15     global.args = args;    
 16     configReader = require('../config_reader')();
 17     configReader.read().then(function() {
 18       ecpDB = require('ecp_model');   
 19 …
Run Code Online (Sandbox Code Playgroud)

mocha.js node.js chai

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

c ++ logging - 如何为不执行任何操作的插入操作符编写条件宏

我有一段使用plog进行日志记录的代码,如下所示:

int main(int argc, char** argv) {

  static plog::ColorConsoleAppender<plog::TxtFormatter> consoleAppender;
  plog::init(plog::verbose, &consoleAppender);

  // Log severity levels are printed in different colors.
  LOG_VERBOSE << "This is a VERBOSE message";
  LOG_DEBUG << "This is a DEBUG message";
  LOG_INFO << "This is an INFO message";
  LOG_WARNING << "This is a WARNING message";
  LOG_ERROR << "This is an ERROR message";
  LOG_FATAL << "This is a FATAL message";

  return 0;

}
Run Code Online (Sandbox Code Playgroud)

由于此代码将成为库的一部分,因此我不想发出任何日志,除非正在使用它的应用程序启用.所以,我试图看看,如果我可以通过一些宏定义使上述日志记录代码无效.我尝试了以下操作,但导致编译错误:

#ifdef NO_LOGGING
#undef LOG_VERBOSE 
#define LOG_VERBOSE {}
#undef LOG_DEBUG 
#define LOG_DEBUG …
Run Code Online (Sandbox Code Playgroud)

c++ macros

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

useSWRInfinite - getKey 函数始终将 pageIndex 获取为 1

我使用此处定义的 SWRInfinite 示例(https://github.com/vercel/swr/discussions/732)和此处(https://swr.vercel.app/examples/infinite-loading)。

我的代码如下...

import React from 'react'
import {useSelector} from 'react-redux'
import useSWRInfinite from 'swr/infinite'
import {Button, Grid, Typography} from '@material-ui/core'
import getNearbyShops from '../../../lib/nearshop-apis.js'
import ShopThumbnail from './shop-thumbnail.js'
import Spacer from '../../../components/utils/spacer'

const PAGE_SIZE=10

export default function Nearbyshops({category, categoryName}) {

  const getKey = (pageIndex, previousPageData, category) => {
    console.log("getKey::pageIndex", pageIndex)
    // reached the end?
    if (previousPageData && !previousPageData.data) return null

    return [`/api/nearbyshops/${pageIndex+1}`, pageIndex+1, PAGE_SIZE, category]
  }


  const {data, error, size, setSize} = useSWRInfinite ( …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs swr

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

默认构造函数不会引发 C++ 异常?

可能的重复:
为什么使用空括号集调用没有参数的构造函数会出错?

我有一个非常简单的 C++ 类“A”,它的空构造函数在 main 中被调用。唯一的空 c'tor 只是抛出异常SomeException

#include <iostream>
using namespace std;


class SomeException : public exception { };


class A {

public:
    A() {
        throw SomeException();
    }

};

int main() {
    try {
        //A a();
        A a;
        cout << "No exception." << endl;
    }
    catch (SomeException& se) {
        cout << "Caught se." << endl;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我调用 A 的构造函数时没有像下面这样的括号,它正确地抛出了预期的异常。

A a;
Run Code Online (Sandbox Code Playgroud)

这种情况下的输出是:

$ ./a.exe
Caught se.
Run Code Online (Sandbox Code Playgroud)

但是如果我用下面的语法调用 c'tor,它不会抛出异常,并继续到下一行,好像什么也没发生!

A a();
Run Code Online (Sandbox Code Playgroud)

在这种情况下的输出是...

$ ./a.exe
No exception. …
Run Code Online (Sandbox Code Playgroud)

c++ exception

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

smartGWT TileGrid :: onKeyPress - 如何覆盖Enter键,但保持其他键的默认处理

我正在smartGWT项目中的tile网格上加载文件图标.按Enter键时,我想打开所选文件进行显示.

当我覆盖onKeyPress处理程序时,它确实有效,但使用左/右/上/下箭头键的tile网格导航行为将丢失.

我的问题是..,如何保留默认处理行为,同时仍然覆盖Enter键.

  tileGrid.addKeyPressHandler (new KeyPressHandler() {
    @Override
    public void onKeyPress(KeyPressEvent event) {
      if (EventHandler.getKey().equals("Enter")) {
       //do something special here
      }
      else {
        **//TODO: do the default processing..**.
      }
    }
  });
Run Code Online (Sandbox Code Playgroud)

编辑:

@Ras,这是模拟问题的代码.

package com.rv.gwtsample.client;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.smartgwt.client.data.Record;
import com.smartgwt.client.widgets.events.KeyPressEvent;
import com.smartgwt.client.widgets.events.KeyPressHandler;
import com.smartgwt.client.widgets.tile.TileGrid;
import com.smartgwt.client.widgets.tile.TileRecord;

/**
 * @author rvnath
 *
 */
public class MyTileGrid implements EntryPoint {

    /* (non-Javadoc)
     * @see com.google.gwt.core.client.EntryPoint#onModuleLoad()
     */
    @Override
    public void onModuleLoad() {
        // TODO Auto-generated method stub
        TileGrid grid = …
Run Code Online (Sandbox Code Playgroud)

onkeypress smartgwt

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