没有==运算符的if语句的含义

时间:2018-02-05 19:39:56

标签: matlab if-statement

如果fl = 0和变量if fl if a < 10 a = a + 1 else a = a - 1 end end ,在下列情况下会发生什么?

if fl

我不明白if 0部分是什么意思。我将其视为if falseif fl == 0。这对我来说并不意味着什么。 if fl会对我更有意义。

那么package com.mvn.blog.dao; import java.util.ArrayList; import java.util.List; import javax.transaction.Transactional; import org.hibernate.Criteria; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.criterion.Restrictions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import com.mvn.blog.domain.UserDomain; import com.mvn.blog.dto.UserDto; import com.mvn.blog.utility.CommonUtils; @Repository public class UserDaoImpl implements IUserDao { @Autowired SessionFactory sessionFactory; public void setSessionFactory(SessionFactory sf) { this.sessionFactory = sf; } @Transactional public Boolean saveUser(UserDto userDto) throws Exception { Session session = this.sessionFactory.getCurrentSession(); boolean result= false; UserDomain user = CommonUtils.convertObject(userDto, UserDomain.class); session.save(user); result = true; return result; } @Transactional public List<UserDto> getUserList() throws Exception { List<UserDto> userList = new ArrayList<UserDto>(); Session session = this.sessionFactory.getCurrentSession(); Criteria user = session.createCriteria(UserDomain.class); List<UserDomain> result = user.list(); //System.out.println(result); for(UserDomain userDomain : result){ UserDto userDto = CommonUtils.convertObject(userDomain, UserDto.class); userList.add(userDto); } //System.out.println(userList); return userList; } } } 是什么意思?

2 个答案:

答案 0 :(得分:2)

Matlab中的条件if x相当于if all(logical(x)) == true

所以让我们解开all(logical(x))

  • logical(x):由于以下测试中的错误,我们可以看到此操作正在发生。所以x必须是数字(或Matlab视为ASCII值的字符数组)

    if 1;       disp('test'); end  % >> displays 'test'
    if [1 2];   disp('test'); end  % >> displays 'test'
    if 'hi';    disp('test'); end  % >> displays 'test', as int8('hi') = [104 105]
    if table(); disp('test'); end  % >> displays error 'Conversion to logical from table 
                                   %                    is not possible'
    
  • all(logical(x)):这意味着如果x是一个数组,那么所有元素都必须评估为true。我们可以通过使用几个例子来测试这种情况:

    if [true true];  disp('test'); end % >> displays 'test'
    if [true false]; disp('test'); end % >> displays nothing
    if [1 0];        disp('test'); end % >> displays nothing
    

如果您想编写更清晰,更易于维护的代码,那么通常最好是明确并使用if all(logical(x)) == true。当您阅读代码时,会发生什么变得更加明显,并且会让您考虑如何使用any之类的操作来实现不同的结果。

在您的示例中,如果fl = 0然后all(logical(fl)) = false,则您永远不会输入if条件。

答案 1 :(得分:1)

如果在fl = 0时在MATLAB中运行它,则没有任何反应,表明0表示错误。如果你将fl更改为0以外的任何值,那么代码就会执行并打印出if中的任何代码,对于a = 5的情况,它会打印a = 6