标签: optional

Spring中的@RequestParam如何处理Guava的Optional?

@RequestMapping(value = "/contact.html", method = RequestMethod.POST)
public final ModelAndView contact(
        @RequestParam(value = "name", required = false) Optional<String> name) {
Run Code Online (Sandbox Code Playgroud)

如果不需要参数值且没有发送任何内容,Spring如何@RequestMapping处理Optional来自Guava库的内容?

那将会:

  • 调成 null
  • 调成 Optional.absent()

可以Optional.fromNullable(T)用来接受请求吗?

spring nullable spring-mvc optional guava

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

正则表达式可选组

我正在使用这个正则表达式:

((?:[a-z][a-z]+))_(\d+)_((?:[a-z][a-z]+)\d+)_(\d{13})
Run Code Online (Sandbox Code Playgroud)

匹配这样的字符串:

SH_6208069141055_BC000388_20110412101855
Run Code Online (Sandbox Code Playgroud)

分为4组:

SH
6208069141055
BC000388
20110412101855
Run Code Online (Sandbox Code Playgroud)

问题:如何使第一组可选,以便生成的组是空字符串?
在可能的情况下,我想在每种情况下获得4组.

这种情况的输入字符串:(第一组后没有下划线)

6208069141055_BC000388_20110412101855
Run Code Online (Sandbox Code Playgroud)

regex optional regex-group

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

带有可选ID的@OnClick数组(ButterKnife)

我有一个活动,在Web请求完成时膨胀视图.这个视图的一些小部件必须附加到一个onClick方法,所以我有:

@OnClick({R.id.bt1, R.id.bt2, R.id.inflated_bt1, R.id.inflated_bt2})
public void onClick(View view) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

由于R.id.inflated_bt1R.id.inflated_bt2创建应用程序时不存在,它抛出一个异常提示设置一个@Optional注解.

找不到方法'onClick'的ID为XXXXXXXX的必需视图'inflated_bt1'.如果此视图是可选的,请添加"@Optional"注释.

有没有办法用@Optional注释设置一些视图,并在视图膨胀时注入它们?或者,还有另一种方法吗?

谢谢

android onclick optional butterknife

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

如果成功,从函数返回错误的惯用方法是什么?

在Rust中,我认为处理可恢复错误的惯用方法是使用Result.例如,这个功能显然是惯用的:

fn do_work() -> Result<u64, WorkError> {...}
Run Code Online (Sandbox Code Playgroud)

当然,还有一些具有单一,明显的故障状态的功能,因此使用Option类型.一个惯用的例子是这样的:

fn do_work() -> Option<u64>
Run Code Online (Sandbox Code Playgroud)

这一切都在文档中直接解决.但是,我对函数可能失败的情况感到困惑,但在成功时没有任何有意义的值.比较以下两个功能:

fn do_work() -> Option<WorkError>
// vs
fn do_work() -> Result<(), WorkError>
Run Code Online (Sandbox Code Playgroud)

我只是不确定哪一个更惯用,或者更常用于现实世界的Rust代码.我这样的问题的首选资源是Rust书,但我不认为这是在" 错误处理 "部分中解决的.我也没有任何其他Rust文档的运气.

当然,这似乎是相当主观的,但我正在寻找权威的来源,要么说明哪种形式是惯用的,要么说明为什么一种形式优于(或劣等)另一种形式.(我也很好奇这个约定如何与其他大量使用"错误作为值"的语言相比,比如Go和Haskell.)

error-handling idiomatic optional rust rust-result

28
推荐指数
2
解决办法
5794
查看次数

Java 8可选:ifPresent返回对象orElseThrow异常

我想做这样的事情:

 private String getStringIfObjectIsPresent(Optional<Object> object){
        object.ifPresent(() ->{
            String result = "result";
            //some logic with result and return it
            return result;
        }).orElseThrow(MyCustomException::new);
    }
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为ifPresent将Consumer功能接口作为参数,其具有void accept(T t).它不能返回任何值.还有其他办法吗?

java lambda optional

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

为什么在std :: optional的某些实现中会有一个伪联合成员?

libstdc ++(GNU)和libc ++(LLVM)都std::optional使用联合实现值存储,并且它们都包含一个虚拟成员。

GNU实现:

using _Stored_type = remove_const_t<_Tp>;
struct _Empty_byte { };
union {
    _Empty_byte _M_empty;
    _Stored_type _M_payload;
};
Run Code Online (Sandbox Code Playgroud)

LLVM实施:

union
{
    char __null_state_;
    value_type __val_;
};
Run Code Online (Sandbox Code Playgroud)

我的问题是:我们为什么需要这些_M_empty/ __null_state_会员?单成员工会有什么问题吗?

c++ optional unions c++17

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

std :: optional-用{}或std :: nullopt构造为空?

我认为初始化std::optionalwith与std::nullopt默认构造相同。

它们在cppreference中的描述与形式(1)相同。

但是,Clang和GCC似乎都不同地对待这些玩具示例函数。

#include <optional>

struct Data {
    char large_data[0x10000];
};

std::optional<Data> nullopt_init() {
  return std::nullopt;
}

std::optional<Data> default_init() {
  return {};
}
Run Code Online (Sandbox Code Playgroud)

编译器资源管理器似乎暗示使用std::nullopt会简单地设置“ contains”标志,

nullopt_init():
    mov     BYTE PTR [rdi+65536], 0
    mov     rax, rdi
    ret
Run Code Online (Sandbox Code Playgroud)

虽然默认构造将值初始化整个类。这在功能上是等效的,但几乎总是比较昂贵。

default_init():
    sub     rsp, 8
    mov     edx, 65537
    xor     esi, esi
    call    memset
    add     rsp, 8
    ret
Run Code Online (Sandbox Code Playgroud)

这是故意行为吗?什么时候应该优先使用另一种形式?

c++ optional c++17

28
推荐指数
2
解决办法
825
查看次数

Swift if语句 - 用逗号分隔的多个条件?

看一个Swift 示例:

if let sourceViewController = sender.sourceViewController as? MealViewController, meal = sourceViewController.meal {
    ...
}
Run Code Online (Sandbox Code Playgroud)

该文件指出:

...代码将视图控制器分配给本地常量sourceViewController,并检查sourceViewController上的meal属性是否为nil.

问题:当用逗号分隔时,Swift是否允许你在if语句中有多个条件(如本例中的逗号后面所示MealViewController)?

在文档中没有看到这个.

if-statement optional ios swift

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

在类中使用Optional作为属性是一个好习惯吗?

我已经阅读了OptionalJava 8中的目的(遗憾的是我不记得在哪里),我很惊讶作者没有提到在类中使用an Optional作为属性.

由于我在课堂上经常使用选项,我想知道这是不是很好.或者我可以更好地使用普通属性,null它们在未设置时返回?

注意:看起来我的问题可能是基于意见的,但我觉得Optional在课堂上使用的感觉真的不是要走的路(看完上面提到的帖子后).但是,我喜欢使用它,并且找不到使用它的任何缺点.

我想举一个例子来澄清.我有一个类Transaction,它是这样构建的:

public class Transaction {

     private Optional<Customer> = Optional.empty();
     ....
Run Code Online (Sandbox Code Playgroud)

VS

public class Transaction {

     private Customer = null;
     ....
Run Code Online (Sandbox Code Playgroud)

当在一个检查Customer,我认为这是最合理的使用transaction.getCustomer().isPresent()transaction.getCustomer() != null.在我看来,第一个代码比第二个代码更清晰.

java optional java-8

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

Optional.ofNullable和方法链接

我对Optional.ofNullable方法感到惊讶.有一天我写了一个应该返回Optional的函数:

private Optional<Integer> extractFirstValueFrom(InsightsResponse insight) {
    return Optional.ofNullable(insight.getValues().get(0).getValue());
}
Run Code Online (Sandbox Code Playgroud)

我错误地认为Optional.ofNullable会阻止任何NullPointerExceptions内部的参数表达.

现在我想我知道这是非常愚蠢的想法.Java必须首先解析参数以将其传递给Optional.ofNullable调用.

但我有一个问题.有没有一个很好的方法来实现我的目标?我想从表达式获取insight.getValues().get(0).getValue()一些Integer值或null.Null可以是表达式中的每一个:insight.getValues()insight.getValues().get(0).

我知道我可以把它放在try/catch块中,但我想知道是否有更优雅的解决方案.

java optional java-8

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