小编Sab*_* 錆兎的帖子

如何避免重复的 if 语句

我有多个服务使用一种方法实现接口 - execute(). 每个服务都使用此方法根据字符串值执行一些操作,在原始代码中,该值是枚举,因此这些值是常量。

interface Service{
   public void execute();
}

class Service1 implements Service{
   //constructors
   public void execute(JSONObject payload, String payloadType){
      if(payloadType.equals("type1")){
       doSomething(payload);
      }
   }
}

class Service2 implements Service{
   //constructors
   public void execute(JSONObject payload, String payloadType){
      if(payloadType.equals("type1")){
       doSomething1(payload);
      }
      if(payloadType.equals("type2")){
       doSomething2(payload);
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

我想避免每次创建新服务时都编写相同的 if 语句。问题是,每个服务不必根据每个字符串类型执行操作。所以Service1在type等于"type1"时执行action,而Service2根据"type1"和"type2"执行action。

我尝试了以下解决方案:

class Main {
  public static void main(String[] args) {
    exec(new B(), "type2");
  }

  private static void exec(Service service, JSONObject payload, String payloadType){
      if(payloadType.equals("type1")){
       Init i = (Init)service;
       i.init(payload);
      }
      if(payloadType.equals("type2")){ …
Run Code Online (Sandbox Code Playgroud)

java design-patterns

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

Python 2.7 Tkinter 点击打开 webbrowser

from Tkinter import *
import webbrowser

root = Tk()
frame = Frame(root)
frame.pack()

url = 'http://www.sampleurl.com'

def OpenUrl(url):
    webbrowser.open_new(url)

button = Button(frame, text="CLICK", command=OpenUrl(url))

button.pack()
root.mainloop()
Run Code Online (Sandbox Code Playgroud)

我的目标是在单击 GUI 小部件中的按钮时打开一个 URL。但是,我不确定如何执行此操作。

当我在不单击任何内容的情况下运行脚本时,Python 会打开两个新窗口。此外,当我单击按钮时没有任何反应。

python tkinter

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

如何完美设置codeigniter项目的虚拟主机?

我正在尝试为 codeigniter 项目制作一个虚拟主机。我在 httpd-vhosts.conf 中做到了这一点:

    <VirtualHost *:80>
      DocumentRoot "C:\xampp\htdocs\CI_projects\facebook-login"
       ServerName dev.facebook-login.com
       <Directory "C:\xampp\htdocs\CI_projects\facebook-login">
     Require all granted
    </Directory>
    </VirtualHost>
Run Code Online (Sandbox Code Playgroud)

在 application/config/config.php 中,

$config['base_url'] = 'http://dev.facebook-login.com';
Run Code Online (Sandbox Code Playgroud)

$config['index_page'] = '';
Run Code Online (Sandbox Code Playgroud)

浏览器打开登陆页面。但是当从任何其他 uri 传输时,它说找不到对象。当我像这样配置 httpd-vhosts.conf 时:

   <VirtualHost *:80>
      DocumentRoot "C:\xampp\htdocs\CI_projects\facebook-login\index.php"
       ServerName dev.facebook-login.com
       <Directory "C:\xampp\htdocs\CI_projects\facebook-login\index.php">
     Require all granted
    </Directory>
    </VirtualHost>
Run Code Online (Sandbox Code Playgroud)

它出现了资产问题,即图像和某些 css 无法加载。我该如何解决?

php apache uri codeigniter

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

无法导入 'django.http'pylint(import-error)

眼镜:

  • Visual Studio 代码 2019
  • 最新的 pip 版本
  • Django 2.2+ 版本
  • Python 最新 3.7 版本

python django django-views visual-studio-code

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

如何在玩笑中跳过文件执行?

我正在使用 jest 进行集成测试,其中一个文件夹下有 20 个测试文件。我需要确保在运行测试时不需要执行该文件夹中的三个文件。我尝试使用testPathIgnorePatterns但它仅适用于文件夹而不适用于文件。怎么做?

笑话配置.js

/**
 * @file Jest Integration Test Configuration File
 */

module.exports = {
  roots: ['../../tests'],
  testRegex: '_*_integration.test.(js|ts|tsx)?$',
  globals: {
    'ts-jest': {
      tsconfig: 'tsconfig.json',
    },
  },
  moduleFileExtensions: ['ts', 'js'],
  transform: {
    '^.+\\.(ts|tsx)$': 'ts-jest',
  },
  testPathIgnorePatterns: ['tests/api/modules/m3/sample.test.ts'],
  testEnvironment: 'node',
  reporters: [
    'default',
    [
      '../../node_modules/jest-html-reporter',
      {
        pageTitle: 'Integration Test Report',
        outputPath: 'tests/reports/integration-test-report.html',
        includeFailureMsg: true,
      },
    ],
  ],
};

Run Code Online (Sandbox Code Playgroud)

javascript node.js jasmine jestjs

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

Python - () 和 [] 的机制

它看起来e for e in [1, 2, 3, 4, 5]是一个生成器表达式,(e for e in [1, 2, 3, 4, 5])并被评估为一个生成器对象。因此,我认为(...)是 Python 中的评估。

我想list(e for e in [1, 2, 3, 4, 5])是告诉 Python 运行时评估可迭代表达式,生成它的对象,并调用list函数来调用,yield直到它用完元素。

print(list(e for e in [1, 2, 3, 4, 5]))
---
[1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)

[...]下面的代码实际上是什么,它的机制是什么?[ e for e in [1, 2, 3, 4, 5] ]生成一个列表对象,因此我认为它是e for e in [1, 2, …

python

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

在 R 中绘制颜色向量

我在 R 中有这个颜色向量:

"#88FF00" "#54FF00" "#FFFF00" "#13FF00" "#50FF00" "#87FF00" "#FDFB02" "#B8FF00" "#6DFF00" 
"#ECFF00" "#CBFF00" "#EDFF00" "#39FF00" "#B7FF00" "#75FF00" "#65FF00" "#C2FF00" "#25FF00" 
"#9AFF00" "#E6FF00" "#58FF00" "#E5CA1A" "#DEFF00" "#9AFF00" "#21FF00" "#35FF00" "#3AFF00" 
"#D0912F" "#FF0000" "#F7EF08" "#40FF00" "#DA7325" "#D8B027" "#DAFF00" "#55FF00" "#F8F007"
"#46FF00" "#69FF00" "#B8FF00" "#37FF00" "#32FF00" "#60FF00" "#7CFF00" "#00FF00" "#50FF00" 
"#F3E60C" "#DFBE20" "#7FFF00" "#F7EF08" "#99FF00" "#13FF00" "#DA7325" "#13FF00"
Run Code Online (Sandbox Code Playgroud)

我想按此顺序绘制它们,例如热图。我一直在玩弄图像功能,但颜色被重新排序,甚至被图像功能修改。

我尝试的代码如下,当 cols 是上面提到的颜色向量时:

  image(1:nrow(expressionOrdered), 1:ncol(expressionOrdered), as.matrix(expressionOrdered), col= cols,xlab="",ylab="")
Run Code Online (Sandbox Code Playgroud)

plot r

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

查找表究竟是如何工作的以及如何实现它们?

我最近做了一个程序,它处理了很多 if/else 语句来返回特定的值。有人建议改用查找表。我的问题是,

  1. 它们如何工作以及您如何实施它们?
  2. 映射、哈希表和查找表之间有什么区别。

c++ lookup dictionary hashtable

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

ns 在 /usr/bin/tclsh8.6 中找到了正确版本的 tclsh 但它似乎不再存在于 ns2

当我在 Linux 终端中写入 $ns 时,它会显示以下消息:

"When configured, ns found the right version of tclsh in /usr/bin/tclsh8.6
but it doesn't seem to be there anymore, so ns will fall back on running the first tclsh in your path. The wrong version of tclsh may break the test suites. Reconfigure and rebuild ns if this is a problem. "
Run Code Online (Sandbox Code Playgroud)

它会导致我正在执行的 TCL 文件出现任何问题吗?我正在使用ns-allinone-2.35.

networking ns2

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

mixin 和泛型有什么区别?

我正在学习 Django Rest Framework。并且有两个概念在我看来几乎是一样的,并且用于不同的场景。

rest_framework mixins我认为当我们使用视图集时会使用它们。并rest_framework generics与 APIViews 一起使用。

这两个组件有什么区别?

django mixins django-generic-views django-rest-framework

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