面试题答案
一键面试- 操作步骤:
s = 'hello world' result = 'prefix_' + s.upper().slice(0, 5)
- 方法返回值类型对链式调用的影响:
s.upper()
:该方法将字符串s
中的所有字符转为大写,并返回一个新的字符串。因为返回的是字符串类型,所以可以在这个返回值上继续调用其他字符串方法,如slice
。如果upper
方法返回的不是字符串类型(比如返回一个数字或者其他非字符串对象),那么链式调用就无法继续,因为后续的slice
方法是字符串的方法,非字符串对象没有slice
方法,会导致运行时错误。s.upper().slice(0, 5)
:slice
方法从字符串中截取从索引0开始到索引5(不包括索引5)的子字符串,并返回一个新的字符串。同样,由于返回的是字符串类型,所以可以继续在其返回值上进行操作,添加前缀prefix_
。如果slice
方法返回的不是字符串类型,那么在执行'prefix_' + s.upper().slice(0, 5)
时,会因为+
操作符要求两边都是字符串类型而报错。
最终结果result
的值为prefix_HELLO
。
注意:上述代码基于Python语言,不同语言字符串操作方法可能略有不同,但原理类似。例如在JavaScript中代码如下:
let s = 'hello world';
let result = 'prefix_' + s.toUpperCase().substring(0, 5);
其原理也是类似的,toUpperCase
和substring
方法返回值类型决定了能否继续链式调用。