【问题标题】:Is there a way of naming conventions for a specific identifier?有没有一种特定标识符的命名约定方式?
【发布时间】:2021-12-31 15:35:45
【问题描述】:

所以我已经设置了这个任务进行修订,我不确定这个问题意味着什么:

由于编程语言中的标识符不能包含任何空格,因此程序员在说明变量和子例程的名称时使用约定。流行的约定包括 PascalCase(在这些教程中使用)、camelCase、kebab-case 和 snake_case。编写一个函数,接受三个参数,标识符的两个部分,所需的约定并输出标识符。​

例如Shields Up in kebab-case: shields-up - 所有字母均为小写。每个单词用破折号隔开。​

snake_case shields_up - 所有字母均为小写。每个单词用下划线分隔​

camelCase: shieldsUp - 除第二个单词的第一个字母外,所有字母均为小写。​

PascalCase: ShieldsUp - 只有每个单词的第一个字母是大写的。

我假设代码要求在这些约定中显示标识符。 我已经厌倦了寻找将字符串转换为 camelCase 的方法,但仅此而已。

如果有人有任何想法,请告诉我! 谢谢

【问题讨论】:

  • 如果我传入字符串"Shields up" 并指定camelCase,那么您要做的是(1)将输入字符串拆分为单个单词,(2)将第一个单词去掉大写, (3) 每隔一个单词大写,(4) 将它们重新连接在一起,没有空格。
  • 我希望这样的函数接受两个参数(重新格式化的标识符和约定),但从您的问题描述看来,标识符总是两个词,分成两个参数。可能会为您提供一个方法头,它应该让您填写预期的输入格式。
  • 如何将参数传递给函数?作为一个包含(可能)由某个分隔符分隔的多个单词的字符串?作为单词列表?作为多个参数?我们需要两件事。有关任务和您的一些努力的更多信息 - 即您到目前为止编写的代码并正在努力
  • @GreenCloakGuy 不幸的是,主要帖子中显示的问题是我得到的唯一信息。 Tbh 它一定很简单,因为它已提供给我班上从未编码过的人,但问题的编写方式毫无意义
  • @JCaesar 我不知道,我已经给出了我拥有的所有任务信息。我假设我需要为用户创建一个输入以输入这两个单词作为标识符。我不知道这个问题实际上要我做什么,因为它是如此抽象,所以老实说,我目前没有值得展示的代码。对不起

标签: python function conventions


【解决方案1】:

在我的脑海中,camelCase 的一个简单方法是:

>>> def conventionalIdentifier(str1, str2, convention):
...   if(convention == 'camelcase'):
...     return str1.lower() + str2.capitalize()
...   else: #similarly for the rest
...     pass
...
>>> print(conventionalIdentifier('hello', 'there', 'camelcase'))
helloThere

据我所知,该问题指定您采用标识符的两个部分,即您只需将两个字符串以特定格式放在一起。

【讨论】:

  • 这比我以前读过的更有意义,谢谢。我假设我可以对其他两个约定使用相同的布局。非常感谢您的帮助
【解决方案2】:

对于如此琐碎的事情,这可能看起来像很多代码,但它旨在展示如何将方法模块化,从而在需要添加其他样式时使其更具可扩展性。

此外,这允许用户传递多个需要构造成指定样式的单词。与其调用不同的函数,只需调用一个带有指示所需样式的参数的函数。

def kebab(args):
    return '-'.join([arg.lower() for arg in args])

def snake(args):
    return '_'.join([arg.lower() for arg in args])

def camel(args):
    output = [args[0].lower()]
    for arg in args[1:]:
        output.append(arg[0].upper() + arg[1:].lower())
    return ''.join(output)

def pascal(args):
    output = []
    for arg in args:
        output.append(arg[0].upper() + arg[1:].lower())
    return ''.join(output)

CONVENTION = {'k': kebab, 's': snake, 'c': camel, 'p': pascal}

def process(c, args):
    if (func := CONVENTION.get(c.lower(), None)):
        return func(args)
    return None

print(process('s', ['My', 'name','is','jake']))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-28
    • 2010-11-13
    • 1970-01-01
    • 2012-05-07
    相关资源
    最近更新 更多